From 2c82b3f8dd4cbbec78bea4e621a4c3369e2c92aa Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Sat, 10 Feb 2024 11:22:48 +0100 Subject: Disallow cherry-picking update-ref todos --- pkg/gui/controllers/basic_commits_controller.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'pkg/gui/controllers/basic_commits_controller.go') diff --git a/pkg/gui/controllers/basic_commits_controller.go b/pkg/gui/controllers/basic_commits_controller.go index 5a4e4190e..d2e494991 100644 --- a/pkg/gui/controllers/basic_commits_controller.go +++ b/pkg/gui/controllers/basic_commits_controller.go @@ -84,9 +84,10 @@ func (self *BasicCommitsController) GetKeybindings(opts types.KeybindingsOpts) [ DisplayOnScreen: true, }, { - Key: opts.GetKey(opts.Config.Commits.CherryPickCopy), - Handler: self.withItem(self.copyRange), - Description: self.c.Tr.CherryPickCopy, + Key: opts.GetKey(opts.Config.Commits.CherryPickCopy), + Handler: self.withItem(self.copyRange), + GetDisabledReason: self.require(self.itemRangeSelected(self.canCopyCommits)), + Description: self.c.Tr.CherryPickCopy, Tooltip: utils.ResolvePlaceholderString(self.c.Tr.CherryPickCopyTooltip, map[string]string{ "paste": keybindings.Label(opts.Config.Commits.PasteCommits), @@ -292,6 +293,16 @@ func (self *BasicCommitsController) copyRange(*models.Commit) error { return self.c.Helpers().CherryPick.CopyRange(self.context.GetCommits(), self.context) } +func (self *BasicCommitsController) canCopyCommits(selectedCommits []*models.Commit, startIdx int, endIdx int) *types.DisabledReason { + for _, commit := range selectedCommits { + if commit.Sha == "" { + return &types.DisabledReason{Text: self.c.Tr.CannotCherryPickNonCommit, ShowErrorInPanel: true} + } + } + + return nil +} + func (self *BasicCommitsController) handleOldCherryPickKey() error { msg := utils.ResolvePlaceholderString(self.c.Tr.OldCherryPickKeyWarning, map[string]string{ -- cgit v1.2.3