VCS: Improve submit message check

Do not show the "commit message is short" text while
the user is still typing the first words.

Therefore, make the initial timeout larger and restart
the timer whenever the submit message changes.

After the minimal subject length or a newline is entered,
switch to faster evaluation.

Change-Id: I41034ed2c8e71e81dae42685bc9ff310edca2543
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Andre Hartmann
2023-07-24 09:25:00 +02:00
committed by André Hartmann
parent f0a24c8093
commit b4946da9ea
2 changed files with 22 additions and 5 deletions

View File

@@ -113,6 +113,7 @@ struct SubmitEditorWidgetPrivate
QActionPushButton *m_submitButton = nullptr;
QString m_description;
QTimer delayedVerifyDescriptionTimer;
int m_delayedVerifyDescriptionInterval = 2000;
int m_lineWidth = defaultLineWidth;
int m_activatedRow = -1;
@@ -154,7 +155,6 @@ SubmitEditorWidget::SubmitEditorWidget() :
d->descriptionLayout->addWidget(d->description);
d->delayedVerifyDescriptionTimer.setSingleShot(true);
d->delayedVerifyDescriptionTimer.setInterval(500);
connect(&d->delayedVerifyDescriptionTimer, &QTimer::timeout,
this, &SubmitEditorWidget::verifyDescription);
@@ -337,6 +337,12 @@ void SubmitEditorWidget::wrapDescription()
}
}
void VcsBase::SubmitEditorWidget::clearDescriptionHint()
{
d->descriptionHint->setText(QString());
d->descriptionHint->setToolTip(QString());
}
QString SubmitEditorWidget::descriptionText() const
{
return d->m_description;
@@ -579,8 +585,7 @@ void SubmitEditorWidget::hideDescription()
void SubmitEditorWidget::verifyDescription()
{
if (!isEnabled()) {
d->descriptionHint->setText(QString());
d->descriptionHint->setToolTip(QString());
clearDescriptionHint();
return;
}
@@ -604,7 +609,6 @@ void SubmitEditorWidget::verifyDescription()
subjectLength = descriptionLength;
}
enum { MinSubjectLength = 20, MaxSubjectLength = 72, WarningSubjectLength = 55 };
QStringList hints;
if (0 < subjectLength && subjectLength < MinSubjectLength)
hints.append(warning + Tr::tr("Warning: The commit subject is very short."));
@@ -635,7 +639,17 @@ void SubmitEditorWidget::verifyDescription()
void SubmitEditorWidget::descriptionTextChanged()
{
d->m_description = cleanupDescription(d->description->toPlainText());
d->delayedVerifyDescriptionTimer.start();
if (d->m_description.isEmpty()) {
d->m_delayedVerifyDescriptionInterval = 2000;
clearDescriptionHint();
} else if (d->m_description.length() > MinSubjectLength || d->m_description.contains("\n")) {
d->m_delayedVerifyDescriptionInterval = 100;
} else {
d->m_delayedVerifyDescriptionInterval = 2000;
}
d->delayedVerifyDescriptionTimer.start(d->m_delayedVerifyDescriptionInterval);
wrapDescription();
trimDescription();
// append field entries

View File

@@ -95,6 +95,8 @@ protected:
void verifyDescription();
private:
enum { MinSubjectLength = 20, MaxSubjectLength = 72, WarningSubjectLength = 55 };
void updateCheckAllComboBox();
void checkAllToggled();
@@ -110,6 +112,7 @@ private:
int checkedFilesCount() const;
void wrapDescription();
void trimDescription();
void clearDescriptionHint();
SubmitEditorWidgetPrivate *d;
};