Disable global keybinds while popups are active

This commit is contained in:
Chris McDonnell 2025-02-20 13:02:33 -05:00 committed by Stefan Haller
parent b2fd6128f6
commit b766ff9c83
5 changed files with 12 additions and 47 deletions

View file

@ -36,25 +36,25 @@ func (self *GlobalController) GetKeybindings(opts types.KeybindingsOpts) []*type
}, },
{ {
Key: opts.GetKey(opts.Config.Universal.CreateRebaseOptionsMenu), Key: opts.GetKey(opts.Config.Universal.CreateRebaseOptionsMenu),
Handler: self.c.Helpers().MergeAndRebase.CreateRebaseOptionsMenu, Handler: opts.Guards.NoPopupPanel(self.c.Helpers().MergeAndRebase.CreateRebaseOptionsMenu),
Description: self.c.Tr.ViewMergeRebaseOptions, Description: self.c.Tr.ViewMergeRebaseOptions,
Tooltip: self.c.Tr.ViewMergeRebaseOptionsTooltip, Tooltip: self.c.Tr.ViewMergeRebaseOptionsTooltip,
OpensMenu: true, OpensMenu: true,
}, },
{ {
Key: opts.GetKey(opts.Config.Universal.Refresh), Key: opts.GetKey(opts.Config.Universal.Refresh),
Handler: self.refresh, Handler: opts.Guards.NoPopupPanel(self.refresh),
Description: self.c.Tr.Refresh, Description: self.c.Tr.Refresh,
Tooltip: self.c.Tr.RefreshTooltip, Tooltip: self.c.Tr.RefreshTooltip,
}, },
{ {
Key: opts.GetKey(opts.Config.Universal.NextScreenMode), Key: opts.GetKey(opts.Config.Universal.NextScreenMode),
Handler: self.nextScreenMode, Handler: opts.Guards.NoPopupPanel(self.nextScreenMode),
Description: self.c.Tr.NextScreenMode, Description: self.c.Tr.NextScreenMode,
}, },
{ {
Key: opts.GetKey(opts.Config.Universal.PrevScreenMode), Key: opts.GetKey(opts.Config.Universal.PrevScreenMode),
Handler: self.prevScreenMode, Handler: opts.Guards.NoPopupPanel(self.prevScreenMode),
Description: self.c.Tr.PrevScreenMode, Description: self.c.Tr.PrevScreenMode,
}, },
{ {
@ -78,21 +78,21 @@ func (self *GlobalController) GetKeybindings(opts types.KeybindingsOpts) []*type
{ {
ViewName: "", ViewName: "",
Key: opts.GetKey(opts.Config.Universal.FilteringMenu), Key: opts.GetKey(opts.Config.Universal.FilteringMenu),
Handler: self.createFilteringMenu, Handler: opts.Guards.NoPopupPanel(self.createFilteringMenu),
Description: self.c.Tr.OpenFilteringMenu, Description: self.c.Tr.OpenFilteringMenu,
Tooltip: self.c.Tr.OpenFilteringMenuTooltip, Tooltip: self.c.Tr.OpenFilteringMenuTooltip,
OpensMenu: true, OpensMenu: true,
}, },
{ {
Key: opts.GetKey(opts.Config.Universal.DiffingMenu), Key: opts.GetKey(opts.Config.Universal.DiffingMenu),
Handler: self.createDiffingMenu, Handler: opts.Guards.NoPopupPanel(self.createDiffingMenu),
Description: self.c.Tr.ViewDiffingOptions, Description: self.c.Tr.ViewDiffingOptions,
Tooltip: self.c.Tr.ViewDiffingOptionsTooltip, Tooltip: self.c.Tr.ViewDiffingOptionsTooltip,
OpensMenu: true, OpensMenu: true,
}, },
{ {
Key: opts.GetKey(opts.Config.Universal.DiffingMenuAlt), Key: opts.GetKey(opts.Config.Universal.DiffingMenuAlt),
Handler: self.createDiffingMenu, Handler: opts.Guards.NoPopupPanel(self.createDiffingMenu),
Description: self.c.Tr.ViewDiffingOptions, Description: self.c.Tr.ViewDiffingOptions,
Tooltip: self.c.Tr.ViewDiffingOptionsTooltip, Tooltip: self.c.Tr.ViewDiffingOptionsTooltip,
OpensMenu: true, OpensMenu: true,

View file

@ -42,7 +42,7 @@ func (self *JumpToSideWindowController) GetKeybindings(opts types.KeybindingsOpt
// by default the keys are 1, 2, 3, etc // by default the keys are 1, 2, 3, etc
Key: opts.GetKey(opts.Config.Universal.JumpToBlock[index]), Key: opts.GetKey(opts.Config.Universal.JumpToBlock[index]),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: self.goToSideWindow(window), Handler: opts.Guards.NoPopupPanel(self.goToSideWindow(window)),
} }
}) })
} }

View file

@ -83,7 +83,7 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
{ {
ViewName: "", ViewName: "",
Key: opts.GetKey(opts.Config.Universal.OpenRecentRepos), Key: opts.GetKey(opts.Config.Universal.OpenRecentRepos),
Handler: self.helpers.Repos.CreateRecentReposMenu, Handler: opts.Guards.NoPopupPanel(self.helpers.Repos.CreateRecentReposMenu),
Description: self.c.Tr.SwitchRepo, Description: self.c.Tr.SwitchRepo,
}, },
{ {
@ -195,7 +195,7 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
{ {
ViewName: "", ViewName: "",
Key: opts.GetKey(opts.Config.Universal.ExtrasMenu), Key: opts.GetKey(opts.Config.Universal.ExtrasMenu),
Handler: self.handleCreateExtrasMenuPanel, Handler: opts.Guards.NoPopupPanel(self.handleCreateExtrasMenuPanel),
Description: self.c.Tr.OpenCommandLogMenu, Description: self.c.Tr.OpenCommandLogMenu,
Tooltip: self.c.Tr.OpenCommandLogMenuTooltip, Tooltip: self.c.Tr.OpenCommandLogMenuTooltip,
OpensMenu: true, OpensMenu: true,
@ -330,14 +330,14 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
{ {
ViewName: "", ViewName: "",
Key: opts.GetKey(opts.Config.Universal.NextTab), Key: opts.GetKey(opts.Config.Universal.NextTab),
Handler: self.handleNextTab, Handler: opts.Guards.NoPopupPanel(self.handleNextTab),
Description: self.c.Tr.NextTab, Description: self.c.Tr.NextTab,
Tag: "navigation", Tag: "navigation",
}, },
{ {
ViewName: "", ViewName: "",
Key: opts.GetKey(opts.Config.Universal.PrevTab), Key: opts.GetKey(opts.Config.Universal.PrevTab),
Handler: self.handlePrevTab, Handler: opts.Guards.NoPopupPanel(self.handlePrevTab),
Description: self.c.Tr.PrevTab, Description: self.c.Tr.PrevTab,
Tag: "navigation", Tag: "navigation",
}, },

View file

@ -371,7 +371,6 @@ var tests = []*components.IntegrationTest{
tag.Reset, tag.Reset,
ui.Accordion, ui.Accordion,
ui.DisableSwitchTabWithPanelJumpKeys, ui.DisableSwitchTabWithPanelJumpKeys,
ui.DoublePopup,
ui.EmptyMenu, ui.EmptyMenu,
ui.KeybindingSuggestionsWhenSwitchingRepos, ui.KeybindingSuggestionsWhenSwitchingRepos,
ui.ModeSpecificKeybindingSuggestions, ui.ModeSpecificKeybindingSuggestions,

View file

@ -1,34 +0,0 @@
package ui
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var DoublePopup = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Open a popup from within another popup and assert you can escape back to the side panels",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.EmptyCommit("one")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Branches().
Focus().
// arbitrarily bringing up a popup
PressPrimaryAction()
t.ExpectPopup().Alert().
Title(Contains("Error")).
Content(Contains("You have already checked out this branch"))
t.GlobalPress(keys.Universal.OpenRecentRepos)
t.ExpectPopup().Menu().Title(Contains("Recent repositories")).Cancel()
t.Views().Branches().IsFocused()
t.Views().Files().Focus()
},
})