From 18205d6235a0c95a78d8ce12a87969f5d319e40f Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Fri, 6 Sep 2024 14:50:50 +0200 Subject: [PATCH] VCS: Add error message when submit is not possible Fixes: QTCREATORBUG-30333 Change-Id: Ib25a36a05dee2e1c4c4c1d686616899260f98c38 Reviewed-by: Orgad Shaneh --- src/plugins/vcsbase/submiteditorwidget.cpp | 26 +++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/plugins/vcsbase/submiteditorwidget.cpp b/src/plugins/vcsbase/submiteditorwidget.cpp index b4720e9439b..1e63ccabe50 100644 --- a/src/plugins/vcsbase/submiteditorwidget.cpp +++ b/src/plugins/vcsbase/submiteditorwidget.cpp @@ -104,6 +104,7 @@ struct SubmitEditorWidgetPrivate QCheckBox *checkAllCheckBox; QTreeView *fileView; QHBoxLayout *buttonLayout; + QLabel *error; QVBoxLayout *vboxLayout; QList descriptionEditContextMenuActions; @@ -194,6 +195,9 @@ SubmitEditorWidget::SubmitEditorWidget() : d->buttonLayout->addWidget(openSettingsButton); d->buttonLayout->addItem(new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); + d->error = new QLabel(); + d->buttonLayout->addWidget(d->error); + d->vboxLayout = new QVBoxLayout(scrollAreaWidgetContents); d->vboxLayout->setSpacing(6); d->vboxLayout->setContentsMargins(9, 9, 9, 9); @@ -251,16 +255,28 @@ void SubmitEditorWidget::registerActions(QAction *editorUndoAction, QAction *edi } if (submitAction) { + auto updateSubmitEnabled = [this, submitAction] { + QString errorMessage; + const bool submitEnabled = canSubmit(&errorMessage); + submitAction->setEnabled(submitEnabled); + + if (submitEnabled || errorMessage.isEmpty()) { + d->error->clear(); + } else { + const QString hint = QString("") + .arg(Utils::creatorColor(Utils::Theme::TextColorError).name()); + d->error->setText(hint + Tr::tr("Cannot commit: %1").arg(errorMessage)); + } + }; + if (debug) { const SubmitFileModel *model = fileModel(); int count = model ? model->rowCount() : 0; qDebug() << Q_FUNC_INFO << submitAction << count << "items"; } - d->m_commitEnabled = !canSubmit(); - connect(this, &SubmitEditorWidget::submitActionEnabledChanged, - submitAction, &QAction::setEnabled); - connect(this, &SubmitEditorWidget::submitActionTextChanged, - submitAction, &QAction::setText); + updateSubmitEnabled(); + connect(this, &SubmitEditorWidget::submitActionEnabledChanged, this, updateSubmitEnabled); + connect(this, &SubmitEditorWidget::submitActionTextChanged, this, updateSubmitEnabled); d->m_submitButton = new QActionPushButton(submitAction); d->buttonLayout->addWidget(d->m_submitButton); if (!d->m_submitShortcut)