From 373f24c80f2a99f7b4e1efd3a4c1f5fdb375e3bf Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Thu, 20 Jul 2023 21:05:52 +1000 Subject: Fix crash on empty menu When a menu is empty (e.g. due to filtering) we shouldn't crash on focus or selection --- pkg/gui/context/menu_context.go | 4 ++++ pkg/gui/controllers/helpers/confirmation_helper.go | 7 ++++++- pkg/gui/controllers/menu_controller.go | 4 +++- 3 files changed, 13 insertions(+), 2 deletions(-) (limited to 'pkg/gui') diff --git a/pkg/gui/context/menu_context.go b/pkg/gui/context/menu_context.go index 088640ea0..a353a4e0d 100644 --- a/pkg/gui/context/menu_context.go +++ b/pkg/gui/context/menu_context.go @@ -135,6 +135,10 @@ func (self *MenuContext) OnMenuPress(selectedItem *types.MenuItem) error { return err } + if selectedItem == nil { + return nil + } + if err := selectedItem.OnPress(); err != nil { return err } diff --git a/pkg/gui/controllers/helpers/confirmation_helper.go b/pkg/gui/controllers/helpers/confirmation_helper.go index c721310b2..fe18dd638 100644 --- a/pkg/gui/controllers/helpers/confirmation_helper.go +++ b/pkg/gui/controllers/helpers/confirmation_helper.go @@ -302,7 +302,12 @@ func (self *ConfirmationHelper) resizeMenu() { _, _ = self.c.GocuiGui().SetView(self.c.Views().Menu.Name(), x0, y0, x1, menuBottom, 0) tooltipTop := menuBottom + 1 - tooltipHeight := getMessageHeight(true, self.c.Contexts().Menu.GetSelected().Tooltip, panelWidth) + 2 // plus 2 for the frame + tooltip := "" + selectedItem := self.c.Contexts().Menu.GetSelected() + if selectedItem != nil { + tooltip = selectedItem.Tooltip + } + tooltipHeight := getMessageHeight(true, tooltip, panelWidth) + 2 // plus 2 for the frame _, _ = self.c.GocuiGui().SetView(self.c.Views().Tooltip.Name(), x0, tooltipTop, x1, tooltipTop+tooltipHeight-1, 0) } diff --git a/pkg/gui/controllers/menu_controller.go b/pkg/gui/controllers/menu_controller.go index 3b04f01f2..c9ba2c701 100644 --- a/pkg/gui/controllers/menu_controller.go +++ b/pkg/gui/controllers/menu_controller.go @@ -53,7 +53,9 @@ func (self *MenuController) GetOnClick() func() error { func (self *MenuController) GetOnFocus() func(types.OnFocusOpts) error { return func(types.OnFocusOpts) error { selectedMenuItem := self.context().GetSelected() - self.c.Views().Tooltip.SetContent(selectedMenuItem.Tooltip) + if selectedMenuItem != nil { + self.c.Views().Tooltip.SetContent(selectedMenuItem.Tooltip) + } return nil } } -- cgit v1.2.3