summaryrefslogtreecommitdiffstats
path: root/pkg/gui/menu_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-08-20 08:24:35 +1000
committerJesse Duffield <jessedduffield@gmail.com>2020-08-23 14:29:18 +1000
commit99707a527ded1ede1c7094af07343f014f28fbde (patch)
tree569383ce14c2a5944aa19937b76823cb70567d90 /pkg/gui/menu_panel.go
parent9ee779378250cea342aa946e20258ae401c12a33 (diff)
WIP
Diffstat (limited to 'pkg/gui/menu_panel.go')
-rw-r--r--pkg/gui/menu_panel.go49
1 files changed, 20 insertions, 29 deletions
diff --git a/pkg/gui/menu_panel.go b/pkg/gui/menu_panel.go
index f036f0f9e..527ded467 100644
--- a/pkg/gui/menu_panel.go
+++ b/pkg/gui/menu_panel.go
@@ -2,6 +2,7 @@ package gui
import (
"fmt"
+ "strings"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/theme"
@@ -14,6 +15,15 @@ type menuItem struct {
onPress func() error
}
+// every item in a list context needs an ID
+func (i *menuItem) ID() string {
+ if i.displayString != "" {
+ return i.displayString
+ }
+
+ return strings.Join(i.displayStrings, "-")
+}
+
// list panel functions
func (gui *Gui) handleMenuSelect() error {
@@ -31,16 +41,7 @@ func (gui *Gui) renderMenuOptions() error {
return gui.renderOptionsMap(optionsMap)
}
-func (gui *Gui) menuConfirmationKeys() []interface{} {
- return []interface{}{gui.getKey("universal.select"), gui.getKey("universal.confirm"), gui.getKey("universal.confirm-alt1")}
-}
-
func (gui *Gui) handleMenuClose(g *gocui.Gui, v *gocui.View) error {
- for _, key := range gui.menuConfirmationKeys() {
- if err := g.DeleteKeybinding("menu", key, gocui.ModNone); err != nil {
- return err
- }
- }
err := g.DeleteView("menu")
if err != nil {
return err
@@ -63,7 +64,7 @@ func (gui *Gui) createMenu(title string, items []*menuItem, createMenuOptions cr
})
}
- gui.State.MenuItemCount = len(items)
+ gui.State.MenuItems = items
stringArrays := make([][]string, len(items))
for i, item := range items {
@@ -88,27 +89,17 @@ func (gui *Gui) createMenu(title string, items []*menuItem, createMenuOptions cr
fmt.Fprint(menuView, list)
gui.State.Panels.Menu.SelectedLine = 0
- wrappedHandlePress := func(g *gocui.Gui, v *gocui.View) error {
- selectedLine := gui.State.Panels.Menu.SelectedLine
- if err := items[selectedLine].onPress(); err != nil {
- return err
- }
-
- return gui.returnFromContext()
- }
-
- gui.State.Panels.Menu.OnPress = wrappedHandlePress
-
- for _, key := range gui.menuConfirmationKeys() {
- _ = gui.g.DeleteKeybinding("menu", key, gocui.ModNone)
-
- if err := gui.g.SetKeybinding("menu", nil, key, gocui.ModNone, wrappedHandlePress); err != nil {
- return err
- }
- }
-
gui.g.Update(func(g *gocui.Gui) error {
return gui.switchContext(gui.Contexts.Menu.Context)
})
return nil
}
+
+func (gui *Gui) onMenuPress() error {
+ selectedLine := gui.State.Panels.Menu.SelectedLine
+ if err := gui.State.MenuItems[selectedLine].onPress(); err != nil {
+ return err
+ }
+
+ return gui.returnFromContext()
+}