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
This commit is contained in:
Stefan Haller 2024-06-26 09:34:46 +02:00
parent c3d1a79a89
commit 22dc7fece9
5 changed files with 9 additions and 25 deletions

View file

@ -116,6 +116,8 @@ func (self *CommitMessageContext) SetPanelState(
"togglePanelKeyBinding": keybindings.Label(self.c.UserConfig.Keybinding.Universal.TogglePanel), "togglePanelKeyBinding": keybindings.Label(self.c.UserConfig.Keybinding.Universal.TogglePanel),
"commitMenuKeybinding": keybindings.Label(self.c.UserConfig.Keybinding.CommitMessage.CommitMenu), "commitMenuKeybinding": keybindings.Label(self.c.UserConfig.Keybinding.CommitMessage.CommitMenu),
}) })
self.c.Views().CommitDescription.Visible = true
} }
func (self *CommitMessageContext) RenderCommitLength() { func (self *CommitMessageContext) RenderCommitLength() {

View file

@ -53,7 +53,7 @@ func (self *CommitDescriptionController) context() *context.CommitMessageContext
} }
func (self *CommitDescriptionController) switchToCommitMessage() error { 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 { func (self *CommitDescriptionController) close() error {

View file

@ -85,7 +85,7 @@ func (self *CommitMessageController) handleNextCommit() error {
} }
func (self *CommitMessageController) switchToCommitDescription() 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 err
} }
return nil return nil

View file

@ -214,7 +214,7 @@ func (self *CustomPatchOptionsMenuAction) handlePullPatchIntoNewCommit() error {
PreserveMessage: false, PreserveMessage: false,
OnConfirm: func(summary string, description string) error { OnConfirm: func(summary string, description string) error {
return self.c.WithWaitingStatus(self.c.Tr.RebasingStatus, func(gocui.Task) 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) self.c.LogAction(self.c.Tr.Actions.MovePatchIntoNewCommit)
err := self.c.Git().Patch.PullPatchIntoNewCommit(self.c.Model().Commits, commitIndex, summary, description) err := self.c.Git().Patch.PullPatchIntoNewCommit(self.c.Model().Commits, commitIndex, summary, description)
if err := self.c.Helpers().MergeAndRebase.CheckMergeOrRebase(err); err != nil { if err := self.c.Helpers().MergeAndRebase.CheckMergeOrRebase(err); err != nil {

View file

@ -154,7 +154,7 @@ func (self *CommitsHelper) OpenCommitMessagePanel(opts *OpenCommitMessagePanelOp
self.UpdateCommitPanelView(opts.InitialMessage) self.UpdateCommitPanelView(opts.InitialMessage)
return self.pushCommitMessageContexts() return self.c.PushContext(self.c.Contexts().CommitMessage)
} }
func (self *CommitsHelper) OnCommitSuccess() { func (self *CommitsHelper) OnCommitSuccess() {
@ -190,28 +190,10 @@ func (self *CommitsHelper) CloseCommitMessagePanel() error {
self.c.Contexts().CommitMessage.SetHistoryMessage("") 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.PopContext()
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,
}
} }
func (self *CommitsHelper) OpenCommitMenu(suggestionFunc func(string) []*types.Suggestion) error { func (self *CommitsHelper) OpenCommitMenu(suggestionFunc func(string) []*types.Suggestion) error {