diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index e269dc386ee..47217a0728a 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -252,6 +252,7 @@ public: void updateActions(VcsBasePluginPrivate::ActionState) override; bool submitEditorAboutToClose() override; void discardCommit() override { cleanCommitMessageFile(); } + bool canCommitOnFailure() const override { return false; } void diffCurrentFile(); void diffCurrentProject(); diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 9a6383ea708..7df56b3d620 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -529,8 +529,7 @@ void VcsBasePluginPrivate::slotSubmitEditorAboutToClose(VcsBaseSubmitEditor *sub << "closing submit editor" << submitEditor << (submitEditor ? submitEditor->document()->id().name() : QByteArray()); if (submitEditor == m_submitEditor) { - const VcsBaseSubmitEditor::PromptSubmitResult response = - submitEditor->promptSubmit(this, !m_submitActionTriggered); + const VcsBaseSubmitEditor::PromptSubmitResult response = submitEditor->promptSubmit(this); m_submitActionTriggered = false; switch (response) { diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h index a1ec06d9339..d29689fe883 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.h +++ b/src/plugins/vcsbase/vcsbaseplugin.h @@ -137,6 +137,8 @@ public: virtual QString commitDisplayName() const; void commitFromEditor(); + virtual bool canCommitOnFailure() const { return true; } + bool submitActionTriggered() const { return m_submitActionTriggered; } protected: // Prompt to save all files before commit: diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index 12ff6f50b72..3f481fc347f 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -495,10 +495,7 @@ static QString withUnusedMnemonic(QString string, const QList &ot return string; } -VcsBaseSubmitEditor::PromptSubmitResult - VcsBaseSubmitEditor::promptSubmit(VcsBasePluginPrivate *plugin, - bool prompt, - bool canCommitOnFailure) +VcsBaseSubmitEditor::PromptSubmitResult VcsBaseSubmitEditor::promptSubmit(VcsBasePluginPrivate *plugin) { auto submitWidget = static_cast(this->widget()); @@ -512,6 +509,7 @@ VcsBaseSubmitEditor::PromptSubmitResult // Pop up a message depending on whether the check succeeded and the // user wants to be prompted bool canCommit = checkSubmitMessage(&errorMessage) && submitWidget->canSubmit(&errorMessage); + const bool prompt = !plugin->submitActionTriggered(); if (canCommit && !prompt) return SubmitConfirmed; CheckableMessageBox mb(Core::ICore::dialogParent()); @@ -529,7 +527,7 @@ VcsBaseSubmitEditor::PromptSubmitResult } mb.setText(message); QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Close | QDialogButtonBox::Cancel; - if (canCommit || canCommitOnFailure) + if (canCommit || plugin->canCommitOnFailure()) buttons |= QDialogButtonBox::Ok; mb.setStandardButtons(buttons); QPushButton *cancelButton = mb.button(QDialogButtonBox::Cancel); diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h index b79bece8364..46e8469b6cd 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.h +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h @@ -54,9 +54,7 @@ public: // 'promptSetting' points to a bool variable containing the plugin's // prompt setting. The user can uncheck it from the message box. enum PromptSubmitResult { SubmitConfirmed, SubmitCanceled, SubmitDiscarded }; - PromptSubmitResult promptSubmit(VcsBasePluginPrivate *plugin, - bool prompt, - bool canCommitOnFailure = true); + PromptSubmitResult promptSubmit(VcsBasePluginPrivate *plugin); QAbstractItemView::SelectionMode fileListSelectionMode() const; void setFileListSelectionMode(QAbstractItemView::SelectionMode sm);