diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2024-01-14 13:51:20 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2024-01-19 10:50:49 +1100 |
commit | 51fb82d6bf26153f294477883a1b2abd592441f9 (patch) | |
tree | 1be91ee6e52592f6d1eec311e26b22725237a200 /pkg/gui/keybindings.go | |
parent | 280b4d60f893a0e20897091ab02617c32180b45d (diff) |
Enforce single-item selection in various actions
We want to show an error when the user tries to invoke an action that expects only
a single item to be selected.
We're using the GetDisabledReason field to enforce this (as well as DisabledReason
on menu items).
I've created a ListControllerTrait to store some shared convenience functions for this.
Diffstat (limited to 'pkg/gui/keybindings.go')
-rw-r--r-- | pkg/gui/keybindings.go | 72 |
1 files changed, 40 insertions, 32 deletions
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 26ce8ec91..90f27ac43 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -123,28 +123,32 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi Handler: self.scrollDownMain, }, { - ViewName: "files", - Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), - Handler: self.handleCopySelectedSideContextItemToClipboard, - Description: self.c.Tr.CopyFileNameToClipboard, + ViewName: "files", + Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), + Handler: self.handleCopySelectedSideContextItemToClipboard, + GetDisabledReason: self.getCopySelectedSideContextItemToClipboardDisabledReason, + Description: self.c.Tr.CopyFileNameToClipboard, }, { - ViewName: "localBranches", - Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), - Handler: self.handleCopySelectedSideContextItemToClipboard, - Description: self.c.Tr.CopyBranchNameToClipboard, + ViewName: "localBranches", + Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), + Handler: self.handleCopySelectedSideContextItemToClipboard, + GetDisabledReason: self.getCopySelectedSideContextItemToClipboardDisabledReason, + Description: self.c.Tr.CopyBranchNameToClipboard, }, { - ViewName: "remoteBranches", - Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), - Handler: self.handleCopySelectedSideContextItemToClipboard, - Description: self.c.Tr.CopyBranchNameToClipboard, + ViewName: "remoteBranches", + Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), + Handler: self.handleCopySelectedSideContextItemToClipboard, + GetDisabledReason: self.getCopySelectedSideContextItemToClipboardDisabledReason, + Description: self.c.Tr.CopyBranchNameToClipboard, }, { - ViewName: "commits", - Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), - Handler: self.handleCopySelectedSideContextItemToClipboard, - Description: self.c.Tr.CopyCommitShaToClipboard, + ViewName: "commits", + Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), + Handler: self.handleCopySelectedSideContextItemToClipboard, + GetDisabledReason: self.getCopySelectedSideContextItemToClipboardDisabledReason, + Description: self.c.Tr.CopyCommitShaToClipboard, }, { ViewName: "commits", @@ -153,16 +157,18 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi Description: self.c.Tr.ResetCherryPick, }, { - ViewName: "reflogCommits", - Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), - Handler: self.handleCopySelectedSideContextItemToClipboard, - Description: self.c.Tr.CopyCommitShaToClipboard, + ViewName: "reflogCommits", + Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), + Handler: self.handleCopySelectedSideContextItemToClipboard, + GetDisabledReason: self.getCopySelectedSideContextItemToClipboardDisabledReason, + Description: self.c.Tr.CopyCommitShaToClipboard, }, { - ViewName: "subCommits", - Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), - Handler: self.handleCopySelectedSideContextItemToClipboard, - Description: self.c.Tr.CopyCommitShaToClipboard, + ViewName: "subCommits", + Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), + Handler: self.handleCopySelectedSideContextItemToClipboard, + GetDisabledReason: self.getCopySelectedSideContextItemToClipboardDisabledReason, + Description: self.c.Tr.CopyCommitShaToClipboard, }, { ViewName: "information", @@ -171,10 +177,11 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi Handler: self.handleInfoClick, }, { - ViewName: "commitFiles", - Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), - Handler: self.handleCopySelectedSideContextItemToClipboard, - Description: self.c.Tr.CopyCommitFileNameToClipboard, + ViewName: "commitFiles", + Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), + Handler: self.handleCopySelectedSideContextItemToClipboard, + GetDisabledReason: self.getCopySelectedSideContextItemToClipboardDisabledReason, + Description: self.c.Tr.CopyCommitFileNameToClipboard, }, { ViewName: "", @@ -240,10 +247,11 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi Handler: self.scrollDownConfirmationPanel, }, { - ViewName: "submodules", - Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), - Handler: self.handleCopySelectedSideContextItemToClipboard, - Description: self.c.Tr.CopySubmoduleNameToClipboard, + ViewName: "submodules", + Key: opts.GetKey(opts.Config.Universal.CopyToClipboard), + Handler: self.handleCopySelectedSideContextItemToClipboard, + GetDisabledReason: self.getCopySelectedSideContextItemToClipboardDisabledReason, + Description: self.c.Tr.CopySubmoduleNameToClipboard, }, { ViewName: "extras", |