aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Sokolovskii <artem.sokolovskii@qt.io>2023-05-08 11:00:04 +0200
committerArtem Sokolovskii <artem.sokolovskii@qt.io>2023-05-11 08:11:54 +0000
commit7960c1f3f6481227986a09dbb20bbdead84bdc00 (patch)
treeea17cbcaae8a9ce380ccd367232e94c85bf41c53
parent2455ff28cd8b96d9fee329b47f8fc515e540198d (diff)
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>
-rw-r--r--src/plugins/clangformat/clangformatconfigwidget.cpp8
-rw-r--r--src/plugins/clangformat/clangformatglobalconfigwidget.cpp30
-rw-r--r--src/plugins/clangformat/clangformatglobalconfigwidget.h3
-rw-r--r--src/plugins/clangformat/clangformatutils.cpp12
-rw-r--r--src/plugins/cppeditor/cppcodestylesettingspage.cpp3
-rw-r--r--src/plugins/texteditor/icodestylepreferences.cpp11
-rw-r--r--src/plugins/texteditor/icodestylepreferences.h3
7 files changed, 51 insertions, 19 deletions
diff --git a/src/plugins/clangformat/clangformatconfigwidget.cpp b/src/plugins/clangformat/clangformatconfigwidget.cpp
index 12e02b4fa7..dc5d1b3dc0 100644
--- a/src/plugins/clangformat/clangformatconfigwidget.cpp
+++ b/src/plugins/clangformat/clangformatconfigwidget.cpp
@@ -89,8 +89,8 @@ ClangFormatConfigWidget::ClangFormatConfigWidget(TextEditor::ICodeStylePreferenc
d->checksScrollArea->setWidget(d->checksWidget);
d->checksScrollArea->setWidgetResizable(true);
- d->checksWidget->setEnabled(!codeStyle->isReadOnly()
- && !codeStyle->isTemporarilyReadOnly());
+ d->checksWidget->setEnabled(!codeStyle->isReadOnly() && !codeStyle->isTemporarilyReadOnly()
+ && !codeStyle->isAdditionalTabDisabled());
FilePath fileName;
if (d->project)
@@ -141,8 +141,8 @@ void ClangFormatConfigWidget::slotCodeStyleChanged(
d->config->setIsReadOnly(codeStyle->isReadOnly());
d->style = d->config->style();
- d->checksWidget->setEnabled(!codeStyle->isReadOnly()
- && !codeStyle->isTemporarilyReadOnly());
+ d->checksWidget->setEnabled(!codeStyle->isReadOnly() && !codeStyle->isTemporarilyReadOnly()
+ && !codeStyle->isAdditionalTabDisabled());
fillTable();
updatePreview();
diff --git a/src/plugins/clangformat/clangformatglobalconfigwidget.cpp b/src/plugins/clangformat/clangformatglobalconfigwidget.cpp
index a0344e14ed..1f810c968c 100644
--- a/src/plugins/clangformat/clangformatglobalconfigwidget.cpp
+++ b/src/plugins/clangformat/clangformatglobalconfigwidget.cpp
@@ -153,9 +153,20 @@ void ClangFormatGlobalConfigWidget::initOverrideCheckBox()
"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);
m_overrideDefault->setDisabled(isDisable);
+ setTemporarilyReadOnly();
};
setEnableOverrideCheckBox(m_indentingOrFormatting->currentIndex());
@@ -166,20 +177,19 @@ void ClangFormatGlobalConfigWidget::initOverrideCheckBox()
Tr::tr("Override Clang Format configuration file with the chosen configuration."));
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)
m_project->setNamedSettings(Constants::OVERRIDE_FILE_ID, checked);
- else {
- m_codeStyle->currentPreferences()->setTemporarilyReadOnly(!checked);
- emit m_codeStyle->currentPreferencesChanged(m_codeStyle->currentPreferences());
- }
+ else
+ setTemporarilyReadOnly();
});
- connect(m_codeStyle, &TextEditor::ICodeStylePreferences::currentPreferencesChanged, this, [this] {
- m_codeStyle->currentPreferences()->setTemporarilyReadOnly(!m_overrideDefault->isChecked());
- });
+ connect(m_codeStyle,
+ &TextEditor::ICodeStylePreferences::currentPreferencesChanged,
+ this,
+ setTemporarilyReadOnly);
}
diff --git a/src/plugins/clangformat/clangformatglobalconfigwidget.h b/src/plugins/clangformat/clangformatglobalconfigwidget.h
index 063c82852a..962a7daaf1 100644
--- a/src/plugins/clangformat/clangformatglobalconfigwidget.h
+++ b/src/plugins/clangformat/clangformatglobalconfigwidget.h
@@ -5,6 +5,8 @@
#include <cppeditor/cppcodestylesettingspage.h>
+#include <utils/guard.h>
+
#include <memory>
QT_BEGIN_NAMESPACE
@@ -40,6 +42,7 @@ private:
ProjectExplorer::Project *m_project;
TextEditor::ICodeStylePreferences *m_codeStyle;
+ Utils::Guard m_ignoreChanges;
QLabel *m_projectHasClangFormat;
QLabel *m_formattingModeLabel;
diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
index 120e27fde7..a9f1a0d29b 100644
--- a/src/plugins/clangformat/clangformatutils.cpp
+++ b/src/plugins/clangformat/clangformatutils.cpp
@@ -213,10 +213,14 @@ bool getCurrentOverriddenSettings(const Utils::FilePath &filePath)
const ProjectExplorer::Project *project = ProjectExplorer::SessionManager::projectForFile(
filePath);
- return getProjectUseGlobalSettings(project) ? !TextEditor::TextEditorSettings::codeStyle("Cpp")
- ->currentPreferences()
- ->isTemporarilyReadOnly()
- : getProjectOverriddenSettings(project);
+ return getProjectUseGlobalSettings(project)
+ ? !TextEditor::TextEditorSettings::codeStyle("Cpp")
+ ->currentPreferences()
+ ->isTemporarilyReadOnly()
+ && !TextEditor::TextEditorSettings::codeStyle("Cpp")
+ ->currentPreferences()
+ ->isAdditionalTabDisabled()
+ : getProjectOverriddenSettings(project);
}
ClangFormatSettings::Mode getProjectIndentationOrFormattingSettings(
diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.cpp b/src/plugins/cppeditor/cppcodestylesettingspage.cpp
index ebb4a37485..02adc53969 100644
--- a/src/plugins/cppeditor/cppcodestylesettingspage.cpp
+++ b/src/plugins/cppeditor/cppcodestylesettingspage.cpp
@@ -414,7 +414,8 @@ void CppCodeStylePreferencesWidget::setCodeStyleSettings(const CppCodeStyleSetti
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)
widget->setEnabled(enable);
diff --git a/src/plugins/texteditor/icodestylepreferences.cpp b/src/plugins/texteditor/icodestylepreferences.cpp
index 931714b71c..29a524ebf6 100644
--- a/src/plugins/texteditor/icodestylepreferences.cpp
+++ b/src/plugins/texteditor/icodestylepreferences.cpp
@@ -25,6 +25,7 @@ public:
QString m_displayName;
bool m_readOnly = false;
bool m_temporarilyReadOnly = false;
+ bool m_isAdditionalTabDisabled = false;
QString m_settingsSuffix;
};
@@ -82,6 +83,16 @@ bool ICodeStylePreferences::isTemporarilyReadOnly() const
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)
{
if (d->m_tabSettings == settings)
diff --git a/src/plugins/texteditor/icodestylepreferences.h b/src/plugins/texteditor/icodestylepreferences.h
index 1c36390344..7fd616d560 100644
--- a/src/plugins/texteditor/icodestylepreferences.h
+++ b/src/plugins/texteditor/icodestylepreferences.h
@@ -40,6 +40,9 @@ public:
bool isTemporarilyReadOnly() const;
void setTemporarilyReadOnly(bool on);
+ bool isAdditionalTabDisabled() const;
+ void setIsAdditionalTabDisabled(bool on);
+
void setTabSettings(const TabSettings &settings);
TabSettings tabSettings() const;
TabSettings currentTabSettings() const;