diff --git a/app/cli.go b/app/cli.go index ed4f818..f4b3831 100644 --- a/app/cli.go +++ b/app/cli.go @@ -139,6 +139,7 @@ func makeTitleBar() *tview.Flex { func AskYesNo(text string, f func()) { + activePane := app.GetFocus() modal := tview.NewModal(). SetText(text). AddButtons([]string{"Yes", "No"}). @@ -146,12 +147,12 @@ func AskYesNo(text string, f func()) { if buttonLabel == "Yes" { f() } - pages := tview.NewPages(). - AddPage("background", layout, true, true) - _ = app.SetRoot(pages, true).EnableMouse(true).Run() + app.SetRoot(layout, true).EnableMouse(true) + app.SetFocus(activePane) }) + pages := tview.NewPages(). AddPage("background", layout, true, true). AddPage("modal", modal, true, true) - _ = app.SetRoot(pages, true).EnableMouse(true).Run() + _ = app.SetRoot(pages, true).EnableMouse(true) } diff --git a/app/project_detail.go b/app/project_detail.go index 60a7995..dffea4f 100644 --- a/app/project_detail.go +++ b/app/project_detail.go @@ -15,17 +15,21 @@ type ProjectDetailPane struct { project *model.Project } +func removeProjectWithConfirmation() { + AskYesNo("Do you want to delete Project?", projectPane.RemoveActivateProject) +} + +func clearCompletedWithConfirmation() { + AskYesNo("Do you want to clear completed tasks?", taskPane.ClearCompletedTasks) +} + // NewProjectDetailPane Initializes ProjectDetailPane func NewProjectDetailPane() *ProjectDetailPane { pane := ProjectDetailPane{ Flex: tview.NewFlex().SetDirection(tview.FlexRow), } - deleteBtn := makeButton("[::u]D[::-]elete Project", func() { - AskYesNo("Do you want to delete Project?", func() { projectPane.RemoveActivateProject() }) - }) - clearBtn := makeButton("[::u]C[::-]lear Completed Tasks", func() { - AskYesNo("Do you want to clear completed tasks?", func() { taskPane.ClearCompletedTasks() }) - }) + deleteBtn := makeButton("[::u]D[::-]elete Project", removeProjectWithConfirmation) + clearBtn := makeButton("[::u]C[::-]lear Completed Tasks", clearCompletedWithConfirmation) deleteBtn.SetBackgroundColor(tcell.ColorRed) pane. @@ -52,10 +56,10 @@ func (pd *ProjectDetailPane) isShowing() bool { func (pd *ProjectDetailPane) handleShortcuts(event *tcell.EventKey) *tcell.EventKey { switch unicode.ToLower(event.Rune()) { case 'd': - AskYesNo("Do you want to delete Project?", func() { projectPane.RemoveActivateProject() }) + removeProjectWithConfirmation() return nil case 'c': - AskYesNo("Do you want to clear completed tasks?", func() { taskPane.ClearCompletedTasks() }) + clearCompletedWithConfirmation() return nil } diff --git a/app/task_detail.go b/app/task_detail.go index 7952938..40e3f7a 100644 --- a/app/task_detail.go +++ b/app/task_detail.go @@ -289,8 +289,9 @@ func writeToTmpFile(content string) (string, error) { func (td *TaskDetailPane) handleShortcuts(event *tcell.EventKey) *tcell.EventKey { switch event.Key() { case tcell.KeyEsc: + removeThirdCol() app.SetFocus(taskPane) - contents.RemoveItem(taskDetailPane) + contents.AddItem(projectDetailPane, 25, 0, false) return nil case tcell.KeyDown: td.taskDetailView.ScrollDown(1)