From 22dc7fece98b37c359f6305ee9ac5271bb2c5f54 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Wed, 26 Jun 2024 09:34:46 +0200 Subject: [PATCH] Have only one of commit message and description on the context stack at a time This is how we do it for confirmation with suggestions too, so be consistent. It will make things easier later in this branch if we only have one context per "panel" on the stack, even if the panel consists of two views. Concretely this means: - only push the message context onto the stack when opening the panel (this requires making the description view visible manually; we do the same for suggestions) - when switching between message and description, use ReplaceContext rather than PushContext --- pkg/gui/context/commit_message_context.go | 2 ++ .../commit_description_controller.go | 2 +- .../controllers/commit_message_controller.go | 2 +- .../custom_patch_options_menu_action.go | 2 +- pkg/gui/controllers/helpers/commits_helper.go | 26 +++---------------- 5 files changed, 9 insertions(+), 25 deletions(-) diff --git a/pkg/gui/context/commit_message_context.go b/pkg/gui/context/commit_message_context.go index f69b7ef74..402f9b12e 100644 --- a/pkg/gui/context/commit_message_context.go +++ b/pkg/gui/context/commit_message_context.go @@ -116,6 +116,8 @@ func (self *CommitMessageContext) SetPanelState( "togglePanelKeyBinding": keybindings.Label(self.c.UserConfig.Keybinding.Universal.TogglePanel), "commitMenuKeybinding": keybindings.Label(self.c.UserConfig.Keybinding.CommitMessage.CommitMenu), }) + + self.c.Views().CommitDescription.Visible = true } func (self *CommitMessageContext) RenderCommitLength() { diff --git a/pkg/gui/controllers/commit_description_controller.go b/pkg/gui/controllers/commit_description_controller.go index 0c078382b..80608fff5 100644 --- a/pkg/gui/controllers/commit_description_controller.go +++ b/pkg/gui/controllers/commit_description_controller.go @@ -53,7 +53,7 @@ func (self *CommitDescriptionController) context() *context.CommitMessageContext } func (self *CommitDescriptionController) switchToCommitMessage() error { - return self.c.PushContext(self.c.Contexts().CommitMessage) + return self.c.ReplaceContext(self.c.Contexts().CommitMessage) } func (self *CommitDescriptionController) close() error { diff --git a/pkg/gui/controllers/commit_message_controller.go b/pkg/gui/controllers/commit_message_controller.go index 4012dc950..5c37b4da9 100644 --- a/pkg/gui/controllers/commit_message_controller.go +++ b/pkg/gui/controllers/commit_message_controller.go @@ -85,7 +85,7 @@ func (self *CommitMessageController) handleNextCommit() error { } func (self *CommitMessageController) switchToCommitDescription() error { - if err := self.c.PushContext(self.c.Contexts().CommitDescription); err != nil { + if err := self.c.ReplaceContext(self.c.Contexts().CommitDescription); err != nil { return err } return nil diff --git a/pkg/gui/controllers/custom_patch_options_menu_action.go b/pkg/gui/controllers/custom_patch_options_menu_action.go index f24607597..867e4528a 100644 --- a/pkg/gui/controllers/custom_patch_options_menu_action.go +++ b/pkg/gui/controllers/custom_patch_options_menu_action.go @@ -214,7 +214,7 @@ func (self *CustomPatchOptionsMenuAction) handlePullPatchIntoNewCommit() error { PreserveMessage: false, OnConfirm: func(summary string, description string) error { return self.c.WithWaitingStatus(self.c.Tr.RebasingStatus, func(gocui.Task) error { - _ = self.c.Helpers().Commits.PopCommitMessageContexts() + _ = self.c.Helpers().Commits.CloseCommitMessagePanel() self.c.LogAction(self.c.Tr.Actions.MovePatchIntoNewCommit) err := self.c.Git().Patch.PullPatchIntoNewCommit(self.c.Model().Commits, commitIndex, summary, description) if err := self.c.Helpers().MergeAndRebase.CheckMergeOrRebase(err); err != nil { diff --git a/pkg/gui/controllers/helpers/commits_helper.go b/pkg/gui/controllers/helpers/commits_helper.go index 216f55f8e..be3a36e8d 100644 --- a/pkg/gui/controllers/helpers/commits_helper.go +++ b/pkg/gui/controllers/helpers/commits_helper.go @@ -154,7 +154,7 @@ func (self *CommitsHelper) OpenCommitMessagePanel(opts *OpenCommitMessagePanelOp self.UpdateCommitPanelView(opts.InitialMessage) - return self.pushCommitMessageContexts() + return self.c.PushContext(self.c.Contexts().CommitMessage) } func (self *CommitsHelper) OnCommitSuccess() { @@ -190,28 +190,10 @@ func (self *CommitsHelper) CloseCommitMessagePanel() error { self.c.Contexts().CommitMessage.SetHistoryMessage("") - return self.PopCommitMessageContexts() -} + self.c.Views().CommitMessage.Visible = false + self.c.Views().CommitDescription.Visible = false -func (self *CommitsHelper) PopCommitMessageContexts() error { - return self.c.RemoveContexts(self.commitMessageContexts()) -} - -func (self *CommitsHelper) pushCommitMessageContexts() error { - for _, context := range self.commitMessageContexts() { - if err := self.c.PushContext(context); err != nil { - return err - } - } - - return nil -} - -func (self *CommitsHelper) commitMessageContexts() []types.Context { - return []types.Context{ - self.c.Contexts().CommitDescription, - self.c.Contexts().CommitMessage, - } + return self.c.PopContext() } func (self *CommitsHelper) OpenCommitMenu(suggestionFunc func(string) []*types.Suggestion) error {