summaryrefslogtreecommitdiffstats
path: root/pkg/gui/keybindings.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2024-01-14 13:51:20 +1100
committerJesse Duffield <jessedduffield@gmail.com>2024-01-19 10:50:49 +1100
commit51fb82d6bf26153f294477883a1b2abd592441f9 (patch)
tree1be91ee6e52592f6d1eec311e26b22725237a200 /pkg/gui/keybindings.go
parent280b4d60f893a0e20897091ab02617c32180b45d (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.go72
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",