VCS: Simplify promptSubmit a bit more

+ fix regression for Git, which allowed to commit invalid commits.

Amends commit 9b61e484be.

Change-Id: I7571863bb982bfae1aa040e08f8c68010b14b147
Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
Orgad Shaneh
2022-10-17 22:08:51 +03:00
committed by Orgad Shaneh
parent 54604b56db
commit 890b85d17e
5 changed files with 8 additions and 10 deletions

View File

@@ -252,6 +252,7 @@ public:
void updateActions(VcsBasePluginPrivate::ActionState) override; void updateActions(VcsBasePluginPrivate::ActionState) override;
bool submitEditorAboutToClose() override; bool submitEditorAboutToClose() override;
void discardCommit() override { cleanCommitMessageFile(); } void discardCommit() override { cleanCommitMessageFile(); }
bool canCommitOnFailure() const override { return false; }
void diffCurrentFile(); void diffCurrentFile();
void diffCurrentProject(); void diffCurrentProject();

View File

@@ -529,8 +529,7 @@ void VcsBasePluginPrivate::slotSubmitEditorAboutToClose(VcsBaseSubmitEditor *sub
<< "closing submit editor" << submitEditor << "closing submit editor" << submitEditor
<< (submitEditor ? submitEditor->document()->id().name() : QByteArray()); << (submitEditor ? submitEditor->document()->id().name() : QByteArray());
if (submitEditor == m_submitEditor) { if (submitEditor == m_submitEditor) {
const VcsBaseSubmitEditor::PromptSubmitResult response = const VcsBaseSubmitEditor::PromptSubmitResult response = submitEditor->promptSubmit(this);
submitEditor->promptSubmit(this, !m_submitActionTriggered);
m_submitActionTriggered = false; m_submitActionTriggered = false;
switch (response) { switch (response) {

View File

@@ -137,6 +137,8 @@ public:
virtual QString commitDisplayName() const; virtual QString commitDisplayName() const;
void commitFromEditor(); void commitFromEditor();
virtual bool canCommitOnFailure() const { return true; }
bool submitActionTriggered() const { return m_submitActionTriggered; }
protected: protected:
// Prompt to save all files before commit: // Prompt to save all files before commit:

View File

@@ -495,10 +495,7 @@ static QString withUnusedMnemonic(QString string, const QList<QPushButton *> &ot
return string; return string;
} }
VcsBaseSubmitEditor::PromptSubmitResult VcsBaseSubmitEditor::PromptSubmitResult VcsBaseSubmitEditor::promptSubmit(VcsBasePluginPrivate *plugin)
VcsBaseSubmitEditor::promptSubmit(VcsBasePluginPrivate *plugin,
bool prompt,
bool canCommitOnFailure)
{ {
auto submitWidget = static_cast<SubmitEditorWidget *>(this->widget()); auto submitWidget = static_cast<SubmitEditorWidget *>(this->widget());
@@ -512,6 +509,7 @@ VcsBaseSubmitEditor::PromptSubmitResult
// Pop up a message depending on whether the check succeeded and the // Pop up a message depending on whether the check succeeded and the
// user wants to be prompted // user wants to be prompted
bool canCommit = checkSubmitMessage(&errorMessage) && submitWidget->canSubmit(&errorMessage); bool canCommit = checkSubmitMessage(&errorMessage) && submitWidget->canSubmit(&errorMessage);
const bool prompt = !plugin->submitActionTriggered();
if (canCommit && !prompt) if (canCommit && !prompt)
return SubmitConfirmed; return SubmitConfirmed;
CheckableMessageBox mb(Core::ICore::dialogParent()); CheckableMessageBox mb(Core::ICore::dialogParent());
@@ -529,7 +527,7 @@ VcsBaseSubmitEditor::PromptSubmitResult
} }
mb.setText(message); mb.setText(message);
QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Close | QDialogButtonBox::Cancel; QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Close | QDialogButtonBox::Cancel;
if (canCommit || canCommitOnFailure) if (canCommit || plugin->canCommitOnFailure())
buttons |= QDialogButtonBox::Ok; buttons |= QDialogButtonBox::Ok;
mb.setStandardButtons(buttons); mb.setStandardButtons(buttons);
QPushButton *cancelButton = mb.button(QDialogButtonBox::Cancel); QPushButton *cancelButton = mb.button(QDialogButtonBox::Cancel);

View File

@@ -54,9 +54,7 @@ public:
// 'promptSetting' points to a bool variable containing the plugin's // 'promptSetting' points to a bool variable containing the plugin's
// prompt setting. The user can uncheck it from the message box. // prompt setting. The user can uncheck it from the message box.
enum PromptSubmitResult { SubmitConfirmed, SubmitCanceled, SubmitDiscarded }; enum PromptSubmitResult { SubmitConfirmed, SubmitCanceled, SubmitDiscarded };
PromptSubmitResult promptSubmit(VcsBasePluginPrivate *plugin, PromptSubmitResult promptSubmit(VcsBasePluginPrivate *plugin);
bool prompt,
bool canCommitOnFailure = true);
QAbstractItemView::SelectionMode fileListSelectionMode() const; QAbstractItemView::SelectionMode fileListSelectionMode() const;
void setFileListSelectionMode(QAbstractItemView::SelectionMode sm); void setFileListSelectionMode(QAbstractItemView::SelectionMode sm);