diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2018-08-25 15:55:49 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2018-08-25 17:32:34 +1000 |
commit | 21f6e9ba87e3513973a62b81e67de253dc8afcde (patch) | |
tree | 6cf786783de0fd38ecd014f04cb33aef5541433b /pkg/gui/confirmation_panel.go | |
parent | f24c95aedec785985dfcd98ff3997152c193bd3e (diff) |
auto-updates
Diffstat (limited to 'pkg/gui/confirmation_panel.go')
-rw-r--r-- | pkg/gui/confirmation_panel.go | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/pkg/gui/confirmation_panel.go b/pkg/gui/confirmation_panel.go index 9d91b53bc..17ca62b01 100644 --- a/pkg/gui/confirmation_panel.go +++ b/pkg/gui/confirmation_panel.go @@ -58,20 +58,30 @@ func (gui *Gui) getConfirmationPanelDimensions(g *gocui.Gui, prompt string) (int func (gui *Gui) createPromptPanel(g *gocui.Gui, currentView *gocui.View, title string, handleConfirm func(*gocui.Gui, *gocui.View) error) error { gui.onNewPopupPanel() - // only need to fit one line - x0, y0, x1, y1 := gui.getConfirmationPanelDimensions(g, "") - if confirmationView, err := g.SetView("confirmation", x0, y0, x1, y1, 0); err != nil { + confirmationView, err := gui.prepareConfirmationPanel(currentView, title, "") + if err != nil { + return err + } + confirmationView.Editable = true + return gui.setKeyBindings(g, handleConfirm, nil) +} + +func (gui *Gui) prepareConfirmationPanel(currentView *gocui.View, title, prompt string) (*gocui.View, error) { + x0, y0, x1, y1 := gui.getConfirmationPanelDimensions(gui.g, prompt) + confirmationView, err := gui.g.SetView("confirmation", x0, y0, x1, y1, 0) + if err != nil { if err != gocui.ErrUnknownView { - return err + return nil, err } - - confirmationView.Editable = true confirmationView.Title = title confirmationView.FgColor = gocui.ColorWhite - gui.switchFocus(g, currentView, confirmationView) - return gui.setKeyBindings(g, handleConfirm, nil) } - return nil + confirmationView.Clear() + + if err := gui.switchFocus(gui.g, currentView, confirmationView); err != nil { + return nil, err + } + return confirmationView, nil } func (gui *Gui) onNewPopupPanel() { @@ -93,18 +103,15 @@ func (gui *Gui) createConfirmationPanel(g *gocui.Gui, currentView *gocui.View, t gui.Log.Error(errMessage) } } - x0, y0, x1, y1 := gui.getConfirmationPanelDimensions(g, prompt) - if confirmationView, err := g.SetView("confirmation", x0, y0, x1, y1, 0); err != nil { - if err != gocui.ErrUnknownView { - return err - } - confirmationView.Title = title - confirmationView.FgColor = gocui.ColorWhite - gui.renderString(g, "confirmation", prompt) - gui.switchFocus(g, currentView, confirmationView) - return gui.setKeyBindings(g, handleConfirm, handleClose) + confirmationView, err := gui.prepareConfirmationPanel(currentView, title, prompt) + if err != nil { + return err } - return nil + confirmationView.Editable = false + if err := gui.renderString(g, "confirmation", prompt); err != nil { + return err + } + return gui.setKeyBindings(g, handleConfirm, handleClose) }) return nil } @@ -131,7 +138,9 @@ func (gui *Gui) setKeyBindings(g *gocui.Gui, handleConfirm, handleClose func(*go "keyBindConfirm": "enter", }, ) - gui.renderString(g, "options", actions) + if err := gui.renderString(g, "options", actions); err != nil { + return err + } if err := g.SetKeybinding("confirmation", gocui.KeyEnter, gocui.ModNone, gui.wrappedConfirmationFunction(handleConfirm)); err != nil { return err } |