summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2023-07-20 21:05:52 +1000
committerJesse Duffield <jessedduffield@gmail.com>2023-07-20 21:05:52 +1000
commit373f24c80f2a99f7b4e1efd3a4c1f5fdb375e3bf (patch)
treec3dd353c8809a4cf57cdd1c91a6be933427d0311
parenta548b289ef8531d12ba74666a8fcf0aa8dde628f (diff)
Fix crash on empty menu
When a menu is empty (e.g. due to filtering) we shouldn't crash on focus or selection
-rw-r--r--pkg/gui/context/menu_context.go4
-rw-r--r--pkg/gui/controllers/helpers/confirmation_helper.go7
-rw-r--r--pkg/gui/controllers/menu_controller.go4
3 files changed, 13 insertions, 2 deletions
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
}
}