forked from qt-creator/qt-creator
ClangFormat: Fix code style preferences are grayed out
Code style preferences are grayed out even when formatting mode is set to disable. Fixes: QTCREATORBUG-29129 Change-Id: Icf82fa0751f9291122c2af55111b6bd5fac85c7b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -89,8 +89,8 @@ ClangFormatConfigWidget::ClangFormatConfigWidget(TextEditor::ICodeStylePreferenc
|
|||||||
|
|
||||||
d->checksScrollArea->setWidget(d->checksWidget);
|
d->checksScrollArea->setWidget(d->checksWidget);
|
||||||
d->checksScrollArea->setWidgetResizable(true);
|
d->checksScrollArea->setWidgetResizable(true);
|
||||||
d->checksWidget->setEnabled(!codeStyle->isReadOnly()
|
d->checksWidget->setEnabled(!codeStyle->isReadOnly() && !codeStyle->isTemporarilyReadOnly()
|
||||||
&& !codeStyle->isTemporarilyReadOnly());
|
&& !codeStyle->isAdditionalTabDisabled());
|
||||||
|
|
||||||
FilePath fileName;
|
FilePath fileName;
|
||||||
if (d->project)
|
if (d->project)
|
||||||
@@ -141,8 +141,8 @@ void ClangFormatConfigWidget::slotCodeStyleChanged(
|
|||||||
d->config->setIsReadOnly(codeStyle->isReadOnly());
|
d->config->setIsReadOnly(codeStyle->isReadOnly());
|
||||||
d->style = d->config->style();
|
d->style = d->config->style();
|
||||||
|
|
||||||
d->checksWidget->setEnabled(!codeStyle->isReadOnly()
|
d->checksWidget->setEnabled(!codeStyle->isReadOnly() && !codeStyle->isTemporarilyReadOnly()
|
||||||
&& !codeStyle->isTemporarilyReadOnly());
|
&& !codeStyle->isAdditionalTabDisabled());
|
||||||
|
|
||||||
fillTable();
|
fillTable();
|
||||||
updatePreview();
|
updatePreview();
|
||||||
|
|||||||
@@ -153,9 +153,20 @@ void ClangFormatGlobalConfigWidget::initOverrideCheckBox()
|
|||||||
"can be overridden by the settings below."));
|
"can be overridden by the settings below."));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto setEnableOverrideCheckBox = [this](int index) {
|
auto setTemporarilyReadOnly = [this]() {
|
||||||
|
if (m_ignoreChanges.isLocked())
|
||||||
|
return;
|
||||||
|
Utils::GuardLocker locker(m_ignoreChanges);
|
||||||
|
m_codeStyle->currentPreferences()->setTemporarilyReadOnly(!m_overrideDefault->isChecked());
|
||||||
|
m_codeStyle->currentPreferences()->setIsAdditionalTabDisabled(!m_overrideDefault->isEnabled());
|
||||||
|
ClangFormatSettings::instance().write();
|
||||||
|
emit m_codeStyle->currentPreferencesChanged(m_codeStyle->currentPreferences());
|
||||||
|
};
|
||||||
|
|
||||||
|
auto setEnableOverrideCheckBox = [this, setTemporarilyReadOnly](int index) {
|
||||||
bool isDisable = index == static_cast<int>(ClangFormatSettings::Mode::Disable);
|
bool isDisable = index == static_cast<int>(ClangFormatSettings::Mode::Disable);
|
||||||
m_overrideDefault->setDisabled(isDisable);
|
m_overrideDefault->setDisabled(isDisable);
|
||||||
|
setTemporarilyReadOnly();
|
||||||
};
|
};
|
||||||
|
|
||||||
setEnableOverrideCheckBox(m_indentingOrFormatting->currentIndex());
|
setEnableOverrideCheckBox(m_indentingOrFormatting->currentIndex());
|
||||||
@@ -166,20 +177,19 @@ void ClangFormatGlobalConfigWidget::initOverrideCheckBox()
|
|||||||
Tr::tr("Override Clang Format configuration file with the chosen configuration."));
|
Tr::tr("Override Clang Format configuration file with the chosen configuration."));
|
||||||
|
|
||||||
m_overrideDefault->setChecked(getProjectOverriddenSettings(m_project));
|
m_overrideDefault->setChecked(getProjectOverriddenSettings(m_project));
|
||||||
m_codeStyle->currentPreferences()->setTemporarilyReadOnly(!m_overrideDefault->isChecked());
|
setTemporarilyReadOnly();
|
||||||
|
|
||||||
connect(m_overrideDefault, &QCheckBox::toggled, this, [this](bool checked) {
|
connect(m_overrideDefault, &QCheckBox::toggled, this, [this, setTemporarilyReadOnly](bool checked) {
|
||||||
if (m_project)
|
if (m_project)
|
||||||
m_project->setNamedSettings(Constants::OVERRIDE_FILE_ID, checked);
|
m_project->setNamedSettings(Constants::OVERRIDE_FILE_ID, checked);
|
||||||
else {
|
else
|
||||||
m_codeStyle->currentPreferences()->setTemporarilyReadOnly(!checked);
|
setTemporarilyReadOnly();
|
||||||
emit m_codeStyle->currentPreferencesChanged(m_codeStyle->currentPreferences());
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(m_codeStyle, &TextEditor::ICodeStylePreferences::currentPreferencesChanged, this, [this] {
|
connect(m_codeStyle,
|
||||||
m_codeStyle->currentPreferences()->setTemporarilyReadOnly(!m_overrideDefault->isChecked());
|
&TextEditor::ICodeStylePreferences::currentPreferencesChanged,
|
||||||
});
|
this,
|
||||||
|
setTemporarilyReadOnly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
#include <cppeditor/cppcodestylesettingspage.h>
|
#include <cppeditor/cppcodestylesettingspage.h>
|
||||||
|
|
||||||
|
#include <utils/guard.h>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
@@ -40,6 +42,7 @@ private:
|
|||||||
|
|
||||||
ProjectExplorer::Project *m_project;
|
ProjectExplorer::Project *m_project;
|
||||||
TextEditor::ICodeStylePreferences *m_codeStyle;
|
TextEditor::ICodeStylePreferences *m_codeStyle;
|
||||||
|
Utils::Guard m_ignoreChanges;
|
||||||
|
|
||||||
QLabel *m_projectHasClangFormat;
|
QLabel *m_projectHasClangFormat;
|
||||||
QLabel *m_formattingModeLabel;
|
QLabel *m_formattingModeLabel;
|
||||||
|
|||||||
@@ -213,9 +213,13 @@ bool getCurrentOverriddenSettings(const Utils::FilePath &filePath)
|
|||||||
const ProjectExplorer::Project *project = ProjectExplorer::SessionManager::projectForFile(
|
const ProjectExplorer::Project *project = ProjectExplorer::SessionManager::projectForFile(
|
||||||
filePath);
|
filePath);
|
||||||
|
|
||||||
return getProjectUseGlobalSettings(project) ? !TextEditor::TextEditorSettings::codeStyle("Cpp")
|
return getProjectUseGlobalSettings(project)
|
||||||
|
? !TextEditor::TextEditorSettings::codeStyle("Cpp")
|
||||||
->currentPreferences()
|
->currentPreferences()
|
||||||
->isTemporarilyReadOnly()
|
->isTemporarilyReadOnly()
|
||||||
|
&& !TextEditor::TextEditorSettings::codeStyle("Cpp")
|
||||||
|
->currentPreferences()
|
||||||
|
->isAdditionalTabDisabled()
|
||||||
: getProjectOverriddenSettings(project);
|
: getProjectOverriddenSettings(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -414,7 +414,8 @@ void CppCodeStylePreferencesWidget::setCodeStyleSettings(const CppCodeStyleSetti
|
|||||||
|
|
||||||
void CppCodeStylePreferencesWidget::slotCurrentPreferencesChanged(ICodeStylePreferences *preferences, bool preview)
|
void CppCodeStylePreferencesWidget::slotCurrentPreferencesChanged(ICodeStylePreferences *preferences, bool preview)
|
||||||
{
|
{
|
||||||
const bool enable = !preferences->isReadOnly() && !preferences->isTemporarilyReadOnly();
|
const bool enable = !preferences->isReadOnly() && (!preferences->isTemporarilyReadOnly()
|
||||||
|
|| preferences->isAdditionalTabDisabled());
|
||||||
for (QWidget *widget : d->m_controllers)
|
for (QWidget *widget : d->m_controllers)
|
||||||
widget->setEnabled(enable);
|
widget->setEnabled(enable);
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public:
|
|||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
bool m_readOnly = false;
|
bool m_readOnly = false;
|
||||||
bool m_temporarilyReadOnly = false;
|
bool m_temporarilyReadOnly = false;
|
||||||
|
bool m_isAdditionalTabDisabled = false;
|
||||||
QString m_settingsSuffix;
|
QString m_settingsSuffix;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -82,6 +83,16 @@ bool ICodeStylePreferences::isTemporarilyReadOnly() const
|
|||||||
return d->m_temporarilyReadOnly;
|
return d->m_temporarilyReadOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ICodeStylePreferences::isAdditionalTabDisabled() const
|
||||||
|
{
|
||||||
|
return d->m_isAdditionalTabDisabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ICodeStylePreferences::setIsAdditionalTabDisabled(bool on)
|
||||||
|
{
|
||||||
|
d->m_isAdditionalTabDisabled = on;
|
||||||
|
}
|
||||||
|
|
||||||
void ICodeStylePreferences::setTabSettings(const TabSettings &settings)
|
void ICodeStylePreferences::setTabSettings(const TabSettings &settings)
|
||||||
{
|
{
|
||||||
if (d->m_tabSettings == settings)
|
if (d->m_tabSettings == settings)
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ public:
|
|||||||
bool isTemporarilyReadOnly() const;
|
bool isTemporarilyReadOnly() const;
|
||||||
void setTemporarilyReadOnly(bool on);
|
void setTemporarilyReadOnly(bool on);
|
||||||
|
|
||||||
|
bool isAdditionalTabDisabled() const;
|
||||||
|
void setIsAdditionalTabDisabled(bool on);
|
||||||
|
|
||||||
void setTabSettings(const TabSettings &settings);
|
void setTabSettings(const TabSettings &settings);
|
||||||
TabSettings tabSettings() const;
|
TabSettings tabSettings() const;
|
||||||
TabSettings currentTabSettings() const;
|
TabSettings currentTabSettings() const;
|
||||||
|
|||||||
Reference in New Issue
Block a user