void addSubmitFieldWidget(SubmitFieldWidget *f);
QList<SubmitFieldWidget *> submitFieldWidgets() const;
+ virtual bool canSubmit() const;
+
signals:
void diffSelected(const QStringList &);
void fileSelectionChanged(bool someFileSelected);
protected:
virtual void changeEvent(QEvent *e);
void insertTopWidget(QWidget *w);
- virtual bool canSubmit() const;
protected slots:
void updateSubmitAction();
const VCSBase::VCSBaseSubmitEditor::PromptSubmitResult answer =
editor->promptSubmit(tr("Closing Git Editor"),
tr("Do you want to commit the change?"),
- tr("The commit message check failed. Do you want to commit the change?"),
- &settings.promptToSubmit, !m_submitActionTriggered);
+ tr("Git will not accept this commit. Do you want to continue to edit it?"),
+ &settings.promptToSubmit, !m_submitActionTriggered, false);
m_submitActionTriggered = false;
switch (answer) {
case VCSBase::VCSBaseSubmitEditor::SubmitCanceled:
const QString &question,
const QString &checkFailureQuestion,
bool *promptSetting,
- bool forcePrompt) const
+ bool forcePrompt,
+ bool canCommitOnFailure) const
{
+ Utils::SubmitEditorWidget *submitWidget =
+ static_cast<Utils::SubmitEditorWidget *>(const_cast<VCSBaseSubmitEditor *>(this)->widget());
+
raiseSubmitEditor();
QString errorMessage;
QWidget *parent = Core::ICore::instance()->mainWindow();
// Pop up a message depending on whether the check succeeded and the
// user wants to be prompted
- if (checkSubmitMessage(&errorMessage)) {
+ bool canCommit = checkSubmitMessage(&errorMessage) && submitWidget->canSubmit();
+ if (canCommit) {
// Check ok, do prompt?
if (prompt) {
// Provide check box to turn off prompt ONLY if it was not forced
msgBox.setMinimumWidth(checkDialogMinimumWidth);
answer = static_cast<QMessageBox::StandardButton>(msgBox.exec());
}
- switch (answer) {
- case QMessageBox::No:
- return SubmitDiscarded;
- case QMessageBox::Yes:
- return SubmitConfirmed;
- default:
- break;
+ if (!canCommit && !canCommitOnFailure) {
+ switch (answer) {
+ case QMessageBox::No:
+ return SubmitDiscarded;
+ case QMessageBox::Yes:
+ return SubmitCanceled;
+ default:
+ break;
+ }
+ } else {
+ switch (answer) {
+ case QMessageBox::No:
+ return SubmitDiscarded;
+ case QMessageBox::Yes:
+ return SubmitConfirmed;
+ default:
+ break;
+ }
}
+
return SubmitCanceled;
}
PromptSubmitResult promptSubmit(const QString &title, const QString &question,
const QString &checkFailureQuestion,
bool *promptSetting,
- bool forcePrompt = false) const;
+ bool forcePrompt = false,
+ bool canCommitOnFailure = true) const;
int fileNameColumn() const;
void setFileNameColumn(int c);