diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-02-14 22:32:31 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-02-15 08:47:36 +1100 |
commit | 665fdded145599d5eb96dd7d61520afea5aa31b1 (patch) | |
tree | dac59424a7a2b1047030fe3144ccf615b804cbce /pkg/gui/options_menu_panel.go | |
parent | 814a0ea36f9f2e2d438ccb43a76402fe0479421b (diff) |
continue refactor of menu panel
Diffstat (limited to 'pkg/gui/options_menu_panel.go')
-rw-r--r-- | pkg/gui/options_menu_panel.go | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/pkg/gui/options_menu_panel.go b/pkg/gui/options_menu_panel.go index 51abb64bb..934da00c6 100644 --- a/pkg/gui/options_menu_panel.go +++ b/pkg/gui/options_menu_panel.go @@ -3,8 +3,6 @@ package gui import ( "strings" - "github.com/go-errors/errors" - "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/utils" ) @@ -38,19 +36,23 @@ func (gui *Gui) getBindings(v *gocui.View) []*Binding { func (gui *Gui) handleCreateOptionsMenu(g *gocui.Gui, v *gocui.View) error { bindings := gui.getBindings(v) - handleMenuPress := func(index int) error { - if bindings[index].Key == nil { - return nil - } - if index >= len(bindings) { - return errors.New("Index is greater than size of bindings") - } - err := gui.handleMenuClose(g, v) - if err != nil { - return err + menuItems := make([]*menuItem, len(bindings)) + + for i, binding := range bindings { + innerBinding := binding // note to self, never close over loop variables + menuItems[i] = &menuItem{ + displayStrings: []string{GetKeyDisplay(innerBinding.Key), innerBinding.Description}, + onPress: func() error { + if innerBinding.Key == nil { + return nil + } + if err := gui.handleMenuClose(g, v); err != nil { + return err + } + return innerBinding.Handler(g, v) + }, } - return bindings[index].Handler(g, v) } - return gui.createMenu(strings.Title(gui.Tr.SLocalize("menu")), bindings, len(bindings), handleMenuPress) + return gui.createMenuNew(strings.Title(gui.Tr.SLocalize("menu")), menuItems, createMenuOptions{}) } |