From 906f8e252e43c1dbd2303fb90de660a2181e5f32 Mon Sep 17 00:00:00 2001 From: Dawid Dziurla Date: Wed, 5 Sep 2018 13:01:21 +0200 Subject: include global keybindings in menu --- pkg/gui/menu_panel.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'pkg/gui/menu_panel.go') diff --git a/pkg/gui/menu_panel.go b/pkg/gui/menu_panel.go index fa276e8c4..1bd02eeb2 100644 --- a/pkg/gui/menu_panel.go +++ b/pkg/gui/menu_panel.go @@ -10,6 +10,9 @@ import ( func (gui *Gui) handleMenuPress(g *gocui.Gui, v *gocui.View) error { lineNumber := gui.getItemPosition(v) + if gui.State.Keys[lineNumber].Key == nil { + return nil + } if len(gui.State.Keys) > lineNumber { err := gui.handleMenuClose(g, v) if err != nil { @@ -59,7 +62,7 @@ func (gui *Gui) GetKey(binding Binding) string { return key } -func (gui *Gui) getMaxKeyLength(bindings []Binding) int { +func (gui *Gui) GetMaxKeyLength(bindings []Binding) int { max := 0 for _, binding := range bindings { keyLength := len(gui.GetKey(binding)) @@ -74,11 +77,17 @@ func (gui *Gui) handleMenu(g *gocui.Gui, v *gocui.View) error { // clear keys slice, so we don't have ghost elements gui.State.Keys = gui.State.Keys[:0] content := "" + current := "" bindings := gui.GetKeybindings() - padWidth := gui.getMaxKeyLength(bindings) + padWidth := gui.GetMaxKeyLength(bindings) for _, binding := range bindings { - if key := gui.GetKey(binding); key != "" && binding.ViewName == v.Name() && binding.Description != "" { + if key := gui.GetKey(binding); key != "" && (binding.ViewName == v.Name() || binding.ViewName == "") && binding.Description != "" { + if binding.ViewName != current { + content += "\n" + gui.State.Keys = append(gui.State.Keys, Binding{}) + current = binding.ViewName + } content += fmt.Sprintf("%s %s\n", utils.WithPadding(key, padWidth), binding.Description) gui.State.Keys = append(gui.State.Keys, binding) } -- cgit v1.2.3