From 1a38bfb76d5e2f1b0f03c35fc17f463b0ecf54f1 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Tue, 5 Nov 2019 15:19:43 +1100 Subject: do not return focus to commitsFiles view after selecting to start a new patch --- pkg/gui/branches_panel.go | 12 ++++++------ pkg/gui/commit_files_panel.go | 6 +++--- pkg/gui/commits_panel.go | 16 ++++++++-------- pkg/gui/confirmation_panel.go | 37 ++++++++++++++++++++----------------- pkg/gui/credentials_panel.go | 2 +- pkg/gui/files_panel.go | 4 ++-- pkg/gui/gui.go | 8 ++++---- pkg/gui/merge_panel.go | 2 +- pkg/gui/rebase_options_panel.go | 2 +- pkg/gui/stash_panel.go | 2 +- pkg/gui/updates.go | 4 ++-- pkg/gui/view_helpers.go | 2 +- 12 files changed, 50 insertions(+), 47 deletions(-) (limited to 'pkg') diff --git a/pkg/gui/branches_panel.go b/pkg/gui/branches_panel.go index fef122886..063fc330c 100644 --- a/pkg/gui/branches_panel.go +++ b/pkg/gui/branches_panel.go @@ -151,7 +151,7 @@ func (gui *Gui) handleForceCheckout(g *gocui.Gui, v *gocui.View) error { branch := gui.getSelectedBranch() message := gui.Tr.SLocalize("SureForceCheckout") title := gui.Tr.SLocalize("ForceCheckoutBranch") - return gui.createConfirmationPanel(g, v, title, message, func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, v, true, title, message, func(g *gocui.Gui, v *gocui.View) error { if err := gui.GitCommand.Checkout(branch.Name, true); err != nil { gui.createErrorPanel(g, err.Error()) } @@ -165,7 +165,7 @@ func (gui *Gui) handleCheckoutBranch(branchName string) error { if strings.Contains(err.Error(), "Please commit your changes or stash them before you switch branch") { // offer to autostash changes - return gui.createConfirmationPanel(gui.g, gui.getBranchesView(), gui.Tr.SLocalize("AutoStashTitle"), gui.Tr.SLocalize("AutoStashPrompt"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(gui.g, gui.getBranchesView(), true, gui.Tr.SLocalize("AutoStashTitle"), gui.Tr.SLocalize("AutoStashPrompt"), func(g *gocui.Gui, v *gocui.View) error { if err := gui.GitCommand.StashSave(gui.Tr.SLocalize("StashPrefix") + branchName); err != nil { return gui.createErrorPanel(g, err.Error()) } @@ -254,7 +254,7 @@ func (gui *Gui) deleteNamedBranch(g *gocui.Gui, v *gocui.View, selectedBranch *c "selectedBranchName": selectedBranch.Name, }, ) - return gui.createConfirmationPanel(g, v, title, message, func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, v, true, title, message, func(g *gocui.Gui, v *gocui.View) error { if err := gui.GitCommand.DeleteBranch(selectedBranch.Name, force); err != nil { errMessage := err.Error() if !force && strings.Contains(errMessage, "is not fully merged") { @@ -279,7 +279,7 @@ func (gui *Gui) handleMerge(g *gocui.Gui, v *gocui.View) error { "selectedBranch": selectedBranch, }, ) - return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("MergingTitle"), prompt, + return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("MergingTitle"), prompt, func(g *gocui.Gui, v *gocui.View) error { err := gui.GitCommand.Merge(selectedBranch) @@ -300,7 +300,7 @@ func (gui *Gui) handleRebase(g *gocui.Gui, v *gocui.View) error { "selectedBranch": selectedBranch, }, ) - return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("RebasingTitle"), prompt, + return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("RebasingTitle"), prompt, func(g *gocui.Gui, v *gocui.View) error { err := gui.GitCommand.RebaseBranch(selectedBranch) @@ -335,7 +335,7 @@ func (gui *Gui) handleFastForward(g *gocui.Gui, v *gocui.View) error { if err := gui.GitCommand.FastForward(branch.Name); err != nil { _ = gui.createErrorPanel(gui.g, err.Error()) } else { - _ = gui.closeConfirmationPrompt(gui.g) + _ = gui.closeConfirmationPrompt(gui.g, true) _ = gui.RenderSelectedBranchUpstreamDifferences() } }() diff --git a/pkg/gui/commit_files_panel.go b/pkg/gui/commit_files_panel.go index e0e8f84dd..952f2bbfa 100644 --- a/pkg/gui/commit_files_panel.go +++ b/pkg/gui/commit_files_panel.go @@ -78,7 +78,7 @@ func (gui *Gui) handleDiscardOldFileChange(g *gocui.Gui, v *gocui.View) error { fileName := gui.State.CommitFiles[gui.State.Panels.CommitFiles.SelectedLine].Name - return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("DiscardFileChangesTitle"), gui.Tr.SLocalize("DiscardFileChangesPrompt"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(gui.g, v, true, gui.Tr.SLocalize("DiscardFileChangesTitle"), gui.Tr.SLocalize("DiscardFileChangesPrompt"), func(g *gocui.Gui, v *gocui.View) error { return gui.WithWaitingStatus(gui.Tr.SLocalize("RebasingStatus"), func() error { if err := gui.GitCommand.DiscardOldFileChanges(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, fileName); err != nil { if err := gui.handleGenericMergeCommandResult(err); err != nil { @@ -144,7 +144,7 @@ func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error { } if gui.GitCommand.PatchManager != nil && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { - return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { gui.GitCommand.PatchManager = nil return toggleTheFile() }, nil) @@ -199,7 +199,7 @@ func (gui *Gui) handleEnterCommitFile(g *gocui.Gui, v *gocui.View) error { } if gui.GitCommand.PatchManager != nil && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { - return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, v, false, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { gui.GitCommand.PatchManager = nil return enterTheFile() }, nil) diff --git a/pkg/gui/commits_panel.go b/pkg/gui/commits_panel.go index ca15d9401..1d7547868 100644 --- a/pkg/gui/commits_panel.go +++ b/pkg/gui/commits_panel.go @@ -124,7 +124,7 @@ func (gui *Gui) handleCommitsPrevLine(g *gocui.Gui, v *gocui.View) error { // specific functions func (gui *Gui) handleResetToCommit(g *gocui.Gui, commitView *gocui.View) error { - return gui.createConfirmationPanel(g, commitView, gui.Tr.SLocalize("ResetToCommit"), gui.Tr.SLocalize("SureResetThisCommit"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, commitView, true, gui.Tr.SLocalize("ResetToCommit"), gui.Tr.SLocalize("SureResetThisCommit"), func(g *gocui.Gui, v *gocui.View) error { commit := gui.getSelectedCommit(g) if commit == nil { panic(errors.New(gui.Tr.SLocalize("NoCommitsThisBranch"))) @@ -158,7 +158,7 @@ func (gui *Gui) handleCommitSquashDown(g *gocui.Gui, v *gocui.View) error { return nil } - gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("Squash"), gui.Tr.SLocalize("SureSquashThisCommit"), func(g *gocui.Gui, v *gocui.View) error { + gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("Squash"), gui.Tr.SLocalize("SureSquashThisCommit"), func(g *gocui.Gui, v *gocui.View) error { return gui.WithWaitingStatus(gui.Tr.SLocalize("SquashingStatus"), func() error { err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "squash") return gui.handleGenericMergeCommandResult(err) @@ -190,7 +190,7 @@ func (gui *Gui) handleCommitFixup(g *gocui.Gui, v *gocui.View) error { return nil } - gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("Fixup"), gui.Tr.SLocalize("SureFixupThisCommit"), func(g *gocui.Gui, v *gocui.View) error { + gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("Fixup"), gui.Tr.SLocalize("SureFixupThisCommit"), func(g *gocui.Gui, v *gocui.View) error { return gui.WithWaitingStatus(gui.Tr.SLocalize("FixingStatus"), func() error { err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "fixup") return gui.handleGenericMergeCommandResult(err) @@ -290,7 +290,7 @@ func (gui *Gui) handleCommitDelete(g *gocui.Gui, v *gocui.View) error { return nil } - return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("DeleteCommitTitle"), gui.Tr.SLocalize("DeleteCommitPrompt"), func(*gocui.Gui, *gocui.View) error { + return gui.createConfirmationPanel(gui.g, v, true, gui.Tr.SLocalize("DeleteCommitTitle"), gui.Tr.SLocalize("DeleteCommitPrompt"), func(*gocui.Gui, *gocui.View) error { return gui.WithWaitingStatus(gui.Tr.SLocalize("DeletingStatus"), func() error { err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "drop") return gui.handleGenericMergeCommandResult(err) @@ -360,7 +360,7 @@ func (gui *Gui) handleCommitEdit(g *gocui.Gui, v *gocui.View) error { } func (gui *Gui) handleCommitAmendTo(g *gocui.Gui, v *gocui.View) error { - return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("AmendCommitTitle"), gui.Tr.SLocalize("AmendCommitPrompt"), func(*gocui.Gui, *gocui.View) error { + return gui.createConfirmationPanel(gui.g, v, true, gui.Tr.SLocalize("AmendCommitTitle"), gui.Tr.SLocalize("AmendCommitPrompt"), func(*gocui.Gui, *gocui.View) error { return gui.WithWaitingStatus(gui.Tr.SLocalize("AmendingStatus"), func() error { err := gui.GitCommand.AmendTo(gui.State.Commits[gui.State.Panels.Commits.SelectedLine].Sha) return gui.handleGenericMergeCommandResult(err) @@ -445,7 +445,7 @@ func (gui *Gui) handleCopyCommitRange(g *gocui.Gui, v *gocui.View) error { // HandlePasteCommits begins a cherry-pick rebase with the commits the user has copied func (gui *Gui) HandlePasteCommits(g *gocui.Gui, v *gocui.View) error { - return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("CherryPick"), gui.Tr.SLocalize("SureCherryPick"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("CherryPick"), gui.Tr.SLocalize("SureCherryPick"), func(g *gocui.Gui, v *gocui.View) error { return gui.WithWaitingStatus(gui.Tr.SLocalize("CherryPickingStatus"), func() error { err := gui.GitCommand.CherryPickCommits(gui.State.CherryPickedCommits) return gui.handleGenericMergeCommandResult(err) @@ -528,7 +528,7 @@ func (gui *Gui) handleCreateFixupCommit(g *gocui.Gui, v *gocui.View) error { return nil } - return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("CreateFixupCommit"), gui.Tr.TemplateLocalize( + return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("CreateFixupCommit"), gui.Tr.TemplateLocalize( "SureCreateFixupCommit", Teml{ "commit": commit.Sha, @@ -548,7 +548,7 @@ func (gui *Gui) handleSquashAllAboveFixupCommits(g *gocui.Gui, v *gocui.View) er return nil } - return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("SquashAboveCommits"), gui.Tr.TemplateLocalize( + return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("SquashAboveCommits"), gui.Tr.TemplateLocalize( "SureSquashAboveCommits", Teml{ "commit": commit.Sha, diff --git a/pkg/gui/confirmation_panel.go b/pkg/gui/confirmation_panel.go index bffda8517..d0516f2e8 100644 --- a/pkg/gui/confirmation_panel.go +++ b/pkg/gui/confirmation_panel.go @@ -15,24 +15,26 @@ import ( "github.com/jesseduffield/lazygit/pkg/theme" ) -func (gui *Gui) wrappedConfirmationFunction(function func(*gocui.Gui, *gocui.View) error) func(*gocui.Gui, *gocui.View) error { +func (gui *Gui) wrappedConfirmationFunction(function func(*gocui.Gui, *gocui.View) error, returnFocusOnClose bool) func(*gocui.Gui, *gocui.View) error { return func(g *gocui.Gui, v *gocui.View) error { if function != nil { if err := function(g, v); err != nil { return err } } - return gui.closeConfirmationPrompt(g) + return gui.closeConfirmationPrompt(g, returnFocusOnClose) } } -func (gui *Gui) closeConfirmationPrompt(g *gocui.Gui) error { +func (gui *Gui) closeConfirmationPrompt(g *gocui.Gui, returnFocusOnClose bool) error { view, err := g.View("confirmation") if err != nil { return nil // if it's already been closed we can just return } - if err := gui.returnFocus(g, view); err != nil { - panic(err) + if returnFocusOnClose { + if err := gui.returnFocus(g, view); err != nil { + panic(err) + } } g.DeleteKeybindings("confirmation") return g.DeleteView("confirmation") @@ -69,7 +71,8 @@ func (gui *Gui) createPromptPanel(g *gocui.Gui, currentView *gocui.View, title s return err } confirmationView.Editable = true - return gui.setKeyBindings(g, handleConfirm, nil) + // in the future we might want to give createPromptPanel the returnFocusOnClose arg too, but for now we're always setting it to true + return gui.setKeyBindings(g, handleConfirm, nil, true) } func (gui *Gui) prepareConfirmationPanel(currentView *gocui.View, title, prompt string, hasLoader bool) (*gocui.View, error) { @@ -100,20 +103,20 @@ func (gui *Gui) onNewPopupPanel() { } func (gui *Gui) createLoaderPanel(g *gocui.Gui, currentView *gocui.View, prompt string) error { - return gui.createPopupPanel(g, currentView, "", prompt, true, nil, nil) + return gui.createPopupPanel(g, currentView, "", prompt, true, true, nil, nil) } // it is very important that within this function we never include the original prompt in any error messages, because it may contain e.g. a user password -func (gui *Gui) createConfirmationPanel(g *gocui.Gui, currentView *gocui.View, title, prompt string, handleConfirm, handleClose func(*gocui.Gui, *gocui.View) error) error { - return gui.createPopupPanel(g, currentView, title, prompt, false, handleConfirm, handleClose) +func (gui *Gui) createConfirmationPanel(g *gocui.Gui, currentView *gocui.View, returnFocusOnClose bool, title, prompt string, handleConfirm, handleClose func(*gocui.Gui, *gocui.View) error) error { + return gui.createPopupPanel(g, currentView, title, prompt, false, returnFocusOnClose, handleConfirm, handleClose) } -func (gui *Gui) createPopupPanel(g *gocui.Gui, currentView *gocui.View, title, prompt string, hasLoader bool, handleConfirm, handleClose func(*gocui.Gui, *gocui.View) error) error { +func (gui *Gui) createPopupPanel(g *gocui.Gui, currentView *gocui.View, title, prompt string, hasLoader bool, returnFocusOnClose bool, handleConfirm, handleClose func(*gocui.Gui, *gocui.View) error) error { gui.onNewPopupPanel() g.Update(func(g *gocui.Gui) error { // delete the existing confirmation panel if it exists if view, _ := g.View("confirmation"); view != nil { - if err := gui.closeConfirmationPrompt(g); err != nil { + if err := gui.closeConfirmationPrompt(g, true); err != nil { errMessage := gui.Tr.TemplateLocalize( "CantCloseConfirmationPrompt", Teml{ @@ -131,12 +134,12 @@ func (gui *Gui) createPopupPanel(g *gocui.Gui, currentView *gocui.View, title, p if err := gui.renderString(g, "confirmation", prompt); err != nil { return err } - return gui.setKeyBindings(g, handleConfirm, handleClose) + return gui.setKeyBindings(g, handleConfirm, handleClose, returnFocusOnClose) }) return nil } -func (gui *Gui) setKeyBindings(g *gocui.Gui, handleConfirm, handleClose func(*gocui.Gui, *gocui.View) error) error { +func (gui *Gui) setKeyBindings(g *gocui.Gui, handleConfirm, handleClose func(*gocui.Gui, *gocui.View) error, returnFocusOnClose bool) error { actions := gui.Tr.TemplateLocalize( "CloseConfirm", Teml{ @@ -147,14 +150,14 @@ func (gui *Gui) setKeyBindings(g *gocui.Gui, handleConfirm, handleClose func(*go if err := gui.renderString(g, "options", actions); err != nil { return err } - if err := g.SetKeybinding("confirmation", gocui.KeyEnter, gocui.ModNone, gui.wrappedConfirmationFunction(handleConfirm)); err != nil { + if err := g.SetKeybinding("confirmation", gocui.KeyEnter, gocui.ModNone, gui.wrappedConfirmationFunction(handleConfirm, returnFocusOnClose)); err != nil { return err } - return g.SetKeybinding("confirmation", gocui.KeyEsc, gocui.ModNone, gui.wrappedConfirmationFunction(handleClose)) + return g.SetKeybinding("confirmation", gocui.KeyEsc, gocui.ModNone, gui.wrappedConfirmationFunction(handleClose, returnFocusOnClose)) } func (gui *Gui) createMessagePanel(g *gocui.Gui, currentView *gocui.View, title, prompt string) error { - return gui.createPopupPanel(g, currentView, title, prompt, false, nil, nil) + return gui.createPopupPanel(g, currentView, title, prompt, false, true, nil, nil) } // createSpecificErrorPanel allows you to create an error popup, specifying the @@ -175,7 +178,7 @@ func (gui *Gui) createSpecificErrorPanel(message string, nextView *gocui.View, w colorFunction := color.New(color.FgRed).SprintFunc() coloredMessage := colorFunction(strings.TrimSpace(message)) - return gui.createConfirmationPanel(gui.g, nextView, gui.Tr.SLocalize("Error"), coloredMessage, nil, nil) + return gui.createConfirmationPanel(gui.g, nextView, true, gui.Tr.SLocalize("Error"), coloredMessage, nil, nil) } func (gui *Gui) createErrorPanel(g *gocui.Gui, message string) error { diff --git a/pkg/gui/credentials_panel.go b/pkg/gui/credentials_panel.go index a609b3eee..ff35ce57c 100644 --- a/pkg/gui/credentials_panel.go +++ b/pkg/gui/credentials_panel.go @@ -98,7 +98,7 @@ func (gui *Gui) HandleCredentialsPopup(g *gocui.Gui, popupOpened bool, cmdErr er // we are not logging this error because it may contain a password _ = gui.createSpecificErrorPanel(errMessage, gui.getFilesView(), false) } else { - _ = gui.closeConfirmationPrompt(g) + _ = gui.closeConfirmationPrompt(g, true) _ = gui.refreshSidePanels(g) } } diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index 76bfe93af..4329632a7 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -338,7 +338,7 @@ func (gui *Gui) handleAmendCommitPress(g *gocui.Gui, filesView *gocui.View) erro title := strings.Title(gui.Tr.SLocalize("AmendLastCommit")) question := gui.Tr.SLocalize("SureToAmend") - return gui.createConfirmationPanel(g, filesView, title, question, func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, filesView, true, title, question, func(g *gocui.Gui, v *gocui.View) error { ok, err := gui.runSyncOrAsyncCommand(gui.GitCommand.AmendHead()) if err != nil { return err @@ -460,7 +460,7 @@ func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error { if pullables == "?" || pullables == "0" { return gui.pushWithForceFlag(g, v, false) } - err := gui.createConfirmationPanel(g, nil, gui.Tr.SLocalize("ForcePush"), gui.Tr.SLocalize("ForcePushPrompt"), func(g *gocui.Gui, v *gocui.View) error { + err := gui.createConfirmationPanel(g, nil, true, gui.Tr.SLocalize("ForcePush"), gui.Tr.SLocalize("ForcePushPrompt"), func(g *gocui.Gui, v *gocui.View) error { return gui.pushWithForceFlag(g, v, true) }, nil) return err diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 43a2478a8..bc3e3a65a 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -601,7 +601,7 @@ func (gui *Gui) loadNewRepo() error { } func (gui *Gui) promptAnonymousReporting() error { - return gui.createConfirmationPanel(gui.g, nil, gui.Tr.SLocalize("AnonymousReportingTitle"), gui.Tr.SLocalize("AnonymousReportingPrompt"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(gui.g, nil, true, gui.Tr.SLocalize("AnonymousReportingTitle"), gui.Tr.SLocalize("AnonymousReportingPrompt"), func(g *gocui.Gui, v *gocui.View) error { gui.waitForIntro.Done() return gui.Config.WriteToUserConfig("reporting", "on") }, func(g *gocui.Gui, v *gocui.View) error { @@ -623,7 +623,7 @@ func (gui *Gui) fetch(g *gocui.Gui, v *gocui.View, canAskForCredentials bool) (u close := func(g *gocui.Gui, v *gocui.View) error { return nil } - _ = gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("Error"), coloredMessage, close, close) + _ = gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("Error"), coloredMessage, close, close) } gui.refreshStatus(g) @@ -664,7 +664,7 @@ func (gui *Gui) startBackgroundFetch() { } _, err := gui.fetch(gui.g, gui.g.CurrentView(), false) if err != nil && strings.Contains(err.Error(), "exit status 128") && isNew { - _ = gui.createConfirmationPanel(gui.g, gui.g.CurrentView(), gui.Tr.SLocalize("NoAutomaticGitFetchTitle"), gui.Tr.SLocalize("NoAutomaticGitFetchBody"), nil, nil) + _ = gui.createConfirmationPanel(gui.g, gui.g.CurrentView(), true, gui.Tr.SLocalize("NoAutomaticGitFetchTitle"), gui.Tr.SLocalize("NoAutomaticGitFetchBody"), nil, nil) } else { gui.goEvery(time.Second*60, func() error { _, err := gui.fetch(gui.g, gui.g.CurrentView(), false) @@ -764,7 +764,7 @@ func (gui *Gui) quit(g *gocui.Gui, v *gocui.View) error { return gui.createUpdateQuitConfirmation(g, v) } if gui.Config.GetUserConfig().GetBool("confirmOnQuit") { - return gui.createConfirmationPanel(g, v, "", gui.Tr.SLocalize("ConfirmQuit"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, v, true, "", gui.Tr.SLocalize("ConfirmQuit"), func(g *gocui.Gui, v *gocui.View) error { return gocui.ErrQuit }, nil) } diff --git a/pkg/gui/merge_panel.go b/pkg/gui/merge_panel.go index 5b08ddbdc..13c32ca7d 100644 --- a/pkg/gui/merge_panel.go +++ b/pkg/gui/merge_panel.go @@ -285,7 +285,7 @@ func (gui *Gui) handleCompleteMerge() error { // promptToContinue asks the user if they want to continue the rebase/merge that's in progress func (gui *Gui) promptToContinue() error { - return gui.createConfirmationPanel(gui.g, gui.getFilesView(), "continue", gui.Tr.SLocalize("ConflictsResolved"), func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(gui.g, gui.getFilesView(), true, "continue", gui.Tr.SLocalize("ConflictsResolved"), func(g *gocui.Gui, v *gocui.View) error { return gui.genericMergeCommand("continue") }, nil) } diff --git a/pkg/gui/rebase_options_panel.go b/pkg/gui/rebase_options_panel.go index 41f0070c3..bc3dd13f0 100644 --- a/pkg/gui/rebase_options_panel.go +++ b/pkg/gui/rebase_options_panel.go @@ -80,7 +80,7 @@ func (gui *Gui) handleGenericMergeCommandResult(result error) error { } else if strings.Contains(result.Error(), "The previous cherry-pick is now empty") { return gui.genericMergeCommand("continue") } else if strings.Contains(result.Error(), "When you have resolved this problem") || strings.Contains(result.Error(), "fix conflicts") || strings.Contains(result.Error(), "Resolve all conflicts manually") { - return gui.createConfirmationPanel(gui.g, gui.getFilesView(), gui.Tr.SLocalize("FoundConflictsTitle"), gui.Tr.SLocalize("FoundConflicts"), + return gui.createConfirmationPanel(gui.g, gui.getFilesView(), true, gui.Tr.SLocalize("FoundConflictsTitle"), gui.Tr.SLocalize("FoundConflicts"), func(g *gocui.Gui, v *gocui.View) error { return nil }, func(g *gocui.Gui, v *gocui.View) error { diff --git a/pkg/gui/stash_panel.go b/pkg/gui/stash_panel.go index 7397bf847..8ac7b6cd1 100644 --- a/pkg/gui/stash_panel.go +++ b/pkg/gui/stash_panel.go @@ -109,7 +109,7 @@ func (gui *Gui) handleStashPop(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleStashDrop(g *gocui.Gui, v *gocui.View) error { title := gui.Tr.SLocalize("StashDrop") message := gui.Tr.SLocalize("SureDropStashEntry") - return gui.createConfirmationPanel(g, v, title, message, func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(g, v, true, title, message, func(g *gocui.Gui, v *gocui.View) error { return gui.stashDo(g, v, "drop") }, nil) } diff --git a/pkg/gui/updates.go b/pkg/gui/updates.go index ff5a0afba..3ed06f7e4 100644 --- a/pkg/gui/updates.go +++ b/pkg/gui/updates.go @@ -6,7 +6,7 @@ func (gui *Gui) showUpdatePrompt(newVersion string) error { title := "New version available!" message := "Download latest version? (enter/esc)" currentView := gui.g.CurrentView() - return gui.createConfirmationPanel(gui.g, currentView, title, message, func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(gui.g, currentView, true, title, message, func(g *gocui.Gui, v *gocui.View) error { gui.startUpdating(newVersion) return nil }, nil) @@ -59,7 +59,7 @@ func (gui *Gui) onUpdateFinish(err error) error { func (gui *Gui) createUpdateQuitConfirmation(g *gocui.Gui, v *gocui.View) error { title := "Currently Updating" message := "An update is in progress. Are you sure you want to quit?" - return gui.createConfirmationPanel(gui.g, v, title, message, func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(gui.g, v, true, title, message, func(g *gocui.Gui, v *gocui.View) error { return gocui.ErrQuit }, nil) } diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index 719285be3..525100c77 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -157,7 +157,7 @@ func (gui *Gui) goToSideView(sideViewName string) func(g *gocui.Gui, v *gocui.Vi func (gui *Gui) closePopupPanels() error { gui.onNewPopupPanel() - err := gui.closeConfirmationPrompt(gui.g) + err := gui.closeConfirmationPrompt(gui.g, true) if err != nil { gui.Log.Error(err) return err -- cgit v1.2.3