diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 4c824df6015..d04162e430f 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -671,6 +671,7 @@ public: // the validation changes focus by opening a dialog bool m_blockAutoApply = false; bool m_allowPathFromDevice = true; + bool m_validatePlaceHolder = false; template void updateWidgetFromCheckStatus(StringAspect *aspect, Widget *w) { @@ -985,6 +986,13 @@ void StringAspect::setAllowPathFromDevice(bool allowPathFromDevice) d->m_pathChooserDisplay->setAllowPathFromDevice(allowPathFromDevice); } +void StringAspect::setValidatePlaceHolder(bool validatePlaceHolder) +{ + d->m_validatePlaceHolder = validatePlaceHolder; + if (d->m_pathChooserDisplay) + d->m_pathChooserDisplay->lineEdit()->setValidatePlaceHolder(validatePlaceHolder); +} + /*! Sets \a elideMode as label elide mode. */ @@ -1131,6 +1139,7 @@ void StringAspect::addToLayout(LayoutItem &parent) d->m_pathChooserDisplay->setPromptDialogTitle(d->m_prompDialogTitle); d->m_pathChooserDisplay->setCommandVersionArguments(d->m_commandVersionArguments); d->m_pathChooserDisplay->setAllowPathFromDevice(d->m_allowPathFromDevice); + d->m_pathChooserDisplay->lineEdit()->setValidatePlaceHolder(d->m_validatePlaceHolder); if (defaultValue() == value()) d->m_pathChooserDisplay->setDefaultValue(defaultValue()); else @@ -1169,6 +1178,7 @@ void StringAspect::addToLayout(LayoutItem &parent) d->m_lineEditDisplay->setValidationFunction(d->m_validator); d->m_lineEditDisplay->setTextKeepingActiveCursor(displayedString); d->m_lineEditDisplay->setReadOnly(isReadOnly()); + d->m_lineEditDisplay->setValidatePlaceHolder(d->m_validatePlaceHolder); d->updateWidgetFromCheckStatus(this, d->m_lineEditDisplay.data()); addLabeledItem(parent, d->m_lineEditDisplay); useMacroExpander(d->m_lineEditDisplay); diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index 297842b3787..77315495392 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -407,6 +407,7 @@ public: void setAutoApplyOnEditingFinished(bool applyOnEditingFinished); void setElideMode(Qt::TextElideMode elideMode); void setAllowPathFromDevice(bool allowPathFromDevice); + void setValidatePlaceHolder(bool validatePlaceHolder); void validateInput(); diff --git a/src/libs/utils/fancylineedit.cpp b/src/libs/utils/fancylineedit.cpp index b06745c5066..2bf50a70fa1 100644 --- a/src/libs/utils/fancylineedit.cpp +++ b/src/libs/utils/fancylineedit.cpp @@ -112,6 +112,7 @@ public: bool m_isFiltering = false; bool m_firstChange = true; bool m_toolTipSet = false; + bool m_validatePlaceHolder = false; QString m_lastFilterText; @@ -469,6 +470,11 @@ QString FancyLineEdit::errorMessage() const return d->m_errorMessage; } +void FancyLineEdit::setValidatePlaceHolder(bool on) +{ + d->m_validatePlaceHolder = on; +} + void FancyLineEdit::validate() { const QString t = text(); @@ -501,7 +507,8 @@ void FancyLineEdit::validate() p.setColor(QPalette::Active, QPalette::Text, newState == Invalid ? d->m_errorTextColor : d->m_okTextColor); p.setColor(QPalette::Active, QPalette::PlaceholderText, - validates ? d->m_placeholderTextColor : d->m_errorTextColor); + validates || !d->m_validatePlaceHolder + ? d->m_placeholderTextColor : d->m_errorTextColor); setPalette(p); if (validHasChanged) diff --git a/src/libs/utils/fancylineedit.h b/src/libs/utils/fancylineedit.h index 6ec0f6d33d4..eb54bc8d866 100644 --- a/src/libs/utils/fancylineedit.h +++ b/src/libs/utils/fancylineedit.h @@ -105,6 +105,8 @@ public: bool isValid() const; QString errorMessage() const; + void setValidatePlaceHolder(bool on); + void setValidationFunction(const ValidationFunction &fn); static ValidationFunction defaultValidationFunction(); void validate(); diff --git a/src/plugins/beautifier/abstractsettings.cpp b/src/plugins/beautifier/abstractsettings.cpp index 1b4ff3aa10e..362a2481538 100644 --- a/src/plugins/beautifier/abstractsettings.cpp +++ b/src/plugins/beautifier/abstractsettings.cpp @@ -88,9 +88,10 @@ AbstractSettings::AbstractSettings(const QString &name, const QString &ending) setSettingsGroups(Utils::Constants::BEAUTIFIER_SETTINGS_GROUP, name); command.setSettingsKey("command"); - command.setExpectedKind(Utils::PathChooser::ExistingCommand); + command.setExpectedKind(PathChooser::ExistingCommand); command.setCommandVersionArguments({"--version"}); command.setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle("Clang Format")); + command.setValidatePlaceHolder(true); supportedMimeTypes.setDisplayStyle(StringAspect::LineEditDisplay); supportedMimeTypes.setSettingsKey("supportedMime");