From 890b85d17ecd5b72a87849a0bb83e99d1fd0edd7 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 17 Oct 2022 22:08:51 +0300 Subject: [PATCH] VCS: Simplify promptSubmit a bit more MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + fix regression for Git, which allowed to commit invalid commits. Amends commit 9b61e484bed797f0424440bce5c87172a832eda4. Change-Id: I7571863bb982bfae1aa040e08f8c68010b14b147 Reviewed-by: André Hartmann --- src/plugins/git/gitplugin.cpp | 1 + src/plugins/vcsbase/vcsbaseplugin.cpp | 3 +-- src/plugins/vcsbase/vcsbaseplugin.h | 2 ++ src/plugins/vcsbase/vcsbasesubmiteditor.cpp | 8 +++----- src/plugins/vcsbase/vcsbasesubmiteditor.h | 4 +--- 5 files changed, 8 insertions(+), 10 deletions(-) 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);