Organized approach to handle shortcuts based on currently focused panel

This commit is contained in:
Anis Ahmad
2020-05-30 13:17:20 +06:00
parent 9a6d3c6b30
commit 89624edcba
4 changed files with 43 additions and 15 deletions

View File

@@ -74,24 +74,23 @@ func setKeyboardShortcuts(projectPane *tview.Flex, taskPane *tview.Flex) *tview.
if ignoreKeyEvt() {
return event
}
// Handle based on current focus. Handlers may modify event
switch {
case projectPane.HasFocus():
event = handleProjectPaneShortcuts(event)
case taskPane.HasFocus():
event = handleTaskPaneShortcuts(event)
case detailPane.HasFocus():
event = handleDetailPaneShortcuts(event)
}
// Global shortcuts
switch event.Rune() {
case 'p':
app.SetFocus(projectPane)
case 't':
app.SetFocus(taskPane)
case 'n':
if projectPane.HasFocus() {
app.SetFocus(newProject)
} else if taskPane.HasFocus() {
app.SetFocus(newTask)
}
case 'e':
if detailPane.HasFocus() {
activateEditor()
} else {
// @TODO : Remove
showMessage(reflect.TypeOf(app.GetFocus()).String())
}
case 'f':
// @TODO : Remove
showMessage(reflect.TypeOf(app.GetFocus()).String())