From 0e76f61359c480a83734b2138a862aa92e5238e0 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sat, 29 Jun 2019 10:47:45 +1000 Subject: [PATCH] allow click events in menu --- pkg/gui/keybindings.go | 2 +- pkg/gui/menu_panel.go | 8 ++++++++ pkg/gui/options_menu_panel.go | 4 ++++ pkg/gui/view_helpers.go | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 584283bb..d75bfab4 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -384,7 +384,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { nextLine func(*gocui.Gui, *gocui.View) error focus func(*gocui.Gui, *gocui.View) error }{ - "menu": {prevLine: gui.handleMenuPrevLine, nextLine: gui.handleMenuNextLine, focus: gui.handleMenuSelect}, + "menu": {prevLine: gui.handleMenuPrevLine, nextLine: gui.handleMenuNextLine, focus: gui.handleMenuClick}, "services": {prevLine: gui.handleServicesPrevLine, nextLine: gui.handleServicesNextLine, focus: gui.handleServicesClick}, "containers": {prevLine: gui.handleContainersPrevLine, nextLine: gui.handleContainersNextLine, focus: gui.handleContainersClick}, "images": {prevLine: gui.handleImagesPrevLine, nextLine: gui.handleImagesNextLine, focus: gui.handleImagesClick}, diff --git a/pkg/gui/menu_panel.go b/pkg/gui/menu_panel.go index e8063f60..083f5e01 100644 --- a/pkg/gui/menu_panel.go +++ b/pkg/gui/menu_panel.go @@ -20,6 +20,14 @@ func (gui *Gui) handleMenuNextLine(g *gocui.Gui, v *gocui.View) error { return gui.handleMenuSelect(g, v) } +func (gui *Gui) handleMenuClick(g *gocui.Gui, v *gocui.View) error { + itemCount := gui.State.MenuItemCount + handleSelect := gui.handleMenuSelect + selectedLine := &gui.State.Panels.Menu.SelectedLine + + return gui.handleClick(v, itemCount, selectedLine, handleSelect) +} + func (gui *Gui) handleMenuPrevLine(g *gocui.Gui, v *gocui.View) error { panelState := gui.State.Panels.Menu gui.changeSelectedLine(&panelState.SelectedLine, v.LinesHeight(), true) diff --git a/pkg/gui/options_menu_panel.go b/pkg/gui/options_menu_panel.go index 8784fe3e..2f204ab1 100644 --- a/pkg/gui/options_menu_panel.go +++ b/pkg/gui/options_menu_panel.go @@ -33,6 +33,10 @@ func (gui *Gui) getBindings(v *gocui.View) []*Binding { } func (gui *Gui) handleCreateOptionsMenu(g *gocui.Gui, v *gocui.View) error { + if v.Name() == "menu" { + return nil + } + bindings := gui.getBindings(v) handleMenuPress := func(index int) error { diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index 5851a203..f866b309 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -385,7 +385,7 @@ func (gui *Gui) clearMainView() { } func (gui *Gui) handleClick(v *gocui.View, itemCount int, selectedLine *int, handleSelect func(*gocui.Gui, *gocui.View) error) error { - if gui.popupPanelFocused() { + if gui.popupPanelFocused() && v != nil && !gui.isPopupPanel(v.Name()) { return nil }