diff --git a/pkg/gui/controllers/branches_controller.go b/pkg/gui/controllers/branches_controller.go index bd7b37700..3c18b955c 100644 --- a/pkg/gui/controllers/branches_controller.go +++ b/pkg/gui/controllers/branches_controller.go @@ -76,9 +76,10 @@ func (self *BranchesController) GetKeybindings(opts types.KeybindingsOpts) []*ty OpensMenu: true, }, { - Key: opts.GetKey(opts.Config.Branches.RebaseBranch), - Handler: opts.Guards.OutsideFilterMode(self.rebase), - Description: self.c.Tr.RebaseBranch, + Key: opts.GetKey(opts.Config.Branches.RebaseBranch), + Handler: opts.Guards.OutsideFilterMode(self.rebase), + Description: self.c.Tr.RebaseBranch, + GetDisabledReason: self.getDisabledReasonForRebase, }, { Key: opts.GetKey(opts.Config.Branches.MergeIntoCurrentBranch), @@ -512,6 +513,16 @@ func (self *BranchesController) rebase() error { return self.c.Helpers().MergeAndRebase.RebaseOntoRef(selectedBranchName) } +func (self *BranchesController) getDisabledReasonForRebase() string { + selectedBranchName := self.context().GetSelected().Name + checkedOutBranch := self.c.Helpers().Refs.GetCheckedOutRef().Name + if selectedBranchName == checkedOutBranch { + return self.c.Tr.CantRebaseOntoSelf + } + + return "" +} + func (self *BranchesController) fastForward(branch *models.Branch) error { if !branch.IsTrackingRemote() { return self.c.ErrorMsg(self.c.Tr.FwdNoUpstream) diff --git a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go index a88615271..de34f2193 100644 --- a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go +++ b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go @@ -220,9 +220,6 @@ func (self *MergeAndRebaseHelper) PromptToContinueRebase() error { func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error { checkedOutBranch := self.refsHelper.GetCheckedOutRef().Name - if ref == checkedOutBranch { - return self.c.ErrorMsg(self.c.Tr.CantRebaseOntoSelf) - } menuItems := []*types.MenuItem{ { Label: self.c.Tr.SimpleRebase,