summaryrefslogtreecommitdiffstats
path: root/pkg/gui/menu_panel.go
diff options
context:
space:
mode:
authorDawid Dziurla <dawidd0811@gmail.com>2018-09-05 13:01:21 +0200
committerDawid Dziurla <dawidd0811@gmail.com>2018-09-05 13:16:40 +0200
commit906f8e252e43c1dbd2303fb90de660a2181e5f32 (patch)
tree25941fd431e59485485d0f6a8eef76daccf5f6db /pkg/gui/menu_panel.go
parent557009e660e3203dce62624599c173e25f086465 (diff)
include global keybindings in menu
Diffstat (limited to 'pkg/gui/menu_panel.go')
-rw-r--r--pkg/gui/menu_panel.go15
1 files changed, 12 insertions, 3 deletions
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)
}