diff options
author | Artem Sokolovskii <artem.sokolovskii@qt.io> | 2022-03-17 12:01:17 +0100 |
---|---|---|
committer | Artem Sokolovskii <artem.sokolovskii@qt.io> | 2022-05-10 09:40:53 +0000 |
commit | bbc44cfb90ca0f43de3774021c28ad4e7163e12b (patch) | |
tree | 949252162bf03c8eeb68d4cd90e004c15029804e /src | |
parent | 81f33072b90ba2ff860654ad59eba7d651c5bfb7 (diff) |
ClangFormat: Fix settings checkboxes disappearance
- Fixed settings checkboxes disappearance after open a project
- Fixed impossibility to save settings
Task-number: QTCREATORBUG-26948
Change-Id: Ia73a61bf56b99adea9ed45c9d656860b185a3d7e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src')
15 files changed, 64 insertions, 33 deletions
diff --git a/src/plugins/clangformat/clangformatconfigwidget.cpp b/src/plugins/clangformat/clangformatconfigwidget.cpp index 1a28f4d6995..d6fa8721b1c 100644 --- a/src/plugins/clangformat/clangformatconfigwidget.cpp +++ b/src/plugins/clangformat/clangformatconfigwidget.cpp @@ -131,14 +131,13 @@ ClangFormatConfigWidget::ClangFormatConfigWidget(ProjectExplorer::Project *proje initChecksAndPreview(); + m_ui->applyButton->show(); if (m_project) { - m_ui->applyButton->show(); hideGlobalCheckboxes(); m_ui->fallbackConfig->hide(); m_ui->overrideDefault->setChecked( m_project->namedSettings(Constants::OVERRIDE_FILE_ID).toBool()); } else { - m_ui->applyButton->hide(); showGlobalCheckboxes(); m_ui->overrideDefault->setChecked(ClangFormatSettings::instance().overrideDefaultFile()); m_ui->overrideDefault->setToolTip( @@ -179,12 +178,13 @@ void ClangFormatConfigWidget::initChecksAndPreview() m_preview->textDocument()->setSyntaxHighlighter(new CppEditor::CppHighlighter); Utils::FilePath fileName; + connect(m_ui->applyButton, &QPushButton::clicked, this, &ClangFormatConfigWidget::apply); if (m_project) { - connect(m_ui->applyButton, &QPushButton::clicked, this, &ClangFormatConfigWidget::apply); fileName = m_project->projectFilePath().pathAppended("snippet.cpp"); } else { fileName = Core::ICore::userResourcePath("snippet.cpp"); } + m_preview->textDocument()->indenter()->setFileName(fileName); } diff --git a/src/plugins/clangformat/clangformatplugin.cpp b/src/plugins/clangformat/clangformatplugin.cpp index 0fbc44eefe9..fbba24f24c2 100644 --- a/src/plugins/clangformat/clangformatplugin.cpp +++ b/src/plugins/clangformat/clangformatplugin.cpp @@ -84,11 +84,10 @@ public: return new ClangFormatIndenter(doc); } - std::pair<CppEditor::CppCodeStyleWidget *, QString> additionalTab(QWidget *parent) const override + std::pair<CppEditor::CppCodeStyleWidget *, QString> additionalTab( + ProjectExplorer::Project *project, QWidget *parent) const override { - if (!parent) - return {new ClangFormatConfigWidget(), tr("ClangFormat")}; - return {new ClangFormatConfigWidget(SessionManager::startupProject()), tr("ClangFormat")}; + return {new ClangFormatConfigWidget(project, parent), tr("ClangFormat")}; } }; diff --git a/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp b/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp index 33fa8d6103a..344e834bcf4 100644 --- a/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp +++ b/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp @@ -98,7 +98,8 @@ TextEditor::ICodeStylePreferences *CppCodeStylePreferencesFactory::createCodeSty } QWidget *CppCodeStylePreferencesFactory::createEditor(TextEditor::ICodeStylePreferences *preferences, - QWidget *parent) const + ProjectExplorer::Project *project, + QWidget *parent) const { auto cppPreferences = qobject_cast<CppCodeStylePreferences *>(preferences); if (!cppPreferences) @@ -108,7 +109,7 @@ QWidget *CppCodeStylePreferencesFactory::createEditor(TextEditor::ICodeStylePref widget->layout()->setContentsMargins(0, 0, 0, 0); widget->setCodeStyle(cppPreferences); - const auto tab = additionalTab(parent); + const auto tab = additionalTab(project, parent); widget->addTab(tab.first, tab.second); return widget; @@ -129,9 +130,10 @@ QString CppCodeStylePreferencesFactory::previewText() const return QLatin1String(defaultPreviewText); } -std::pair<CppCodeStyleWidget *, QString> CppCodeStylePreferencesFactory::additionalTab(QWidget *parent) const +std::pair<CppCodeStyleWidget *, QString> CppCodeStylePreferencesFactory::additionalTab(ProjectExplorer::Project *project, QWidget *parent) const { Q_UNUSED(parent) + Q_UNUSED(project) return {nullptr, ""}; } diff --git a/src/plugins/cppeditor/cppcodestylepreferencesfactory.h b/src/plugins/cppeditor/cppcodestylepreferencesfactory.h index ce38ae6fb79..d08baa81467 100644 --- a/src/plugins/cppeditor/cppcodestylepreferencesfactory.h +++ b/src/plugins/cppeditor/cppcodestylepreferencesfactory.h @@ -41,11 +41,13 @@ public: QString displayName() override; TextEditor::ICodeStylePreferences *createCodeStyle() const override; QWidget *createEditor(TextEditor::ICodeStylePreferences *settings, + ProjectExplorer::Project *project, QWidget *parent) const override; TextEditor::Indenter *createIndenter(QTextDocument *doc) const override; QString snippetProviderGroupId() const override; QString previewText() const override; - virtual std::pair<CppCodeStyleWidget *, QString> additionalTab(QWidget *parent) const; + virtual std::pair<CppCodeStyleWidget *, QString> additionalTab(ProjectExplorer::Project *project, + QWidget *parent) const; }; } // namespace CppEditor diff --git a/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp b/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp index ec54db78715..f84a7f0bf97 100644 --- a/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp +++ b/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp @@ -60,8 +60,10 @@ TextEditor::ICodeStylePreferences *NimCodeStylePreferencesFactory::createCodeSty } QWidget *NimCodeStylePreferencesFactory::createEditor(TextEditor::ICodeStylePreferences *preferences, + ProjectExplorer::Project *project, QWidget *parent) const { + Q_UNUSED(project) auto result = new NimCodeStylePreferencesWidget(preferences, parent); result->layout()->setContentsMargins(0, 0, 0, 0); return result; diff --git a/src/plugins/nim/settings/nimcodestylepreferencesfactory.h b/src/plugins/nim/settings/nimcodestylepreferencesfactory.h index 9c3848ed213..157700574cc 100644 --- a/src/plugins/nim/settings/nimcodestylepreferencesfactory.h +++ b/src/plugins/nim/settings/nimcodestylepreferencesfactory.h @@ -40,6 +40,7 @@ public: QString displayName() override; TextEditor::ICodeStylePreferences *createCodeStyle() const override; QWidget *createEditor(TextEditor::ICodeStylePreferences *settings, + ProjectExplorer::Project *project, QWidget *parent) const override; TextEditor::Indenter *createIndenter(QTextDocument *doc) const override; QString snippetProviderGroupId() const override; diff --git a/src/plugins/projectexplorer/codestylesettingspropertiespage.cpp b/src/plugins/projectexplorer/codestylesettingspropertiespage.cpp index 7c42b0bc49b..7abca7b0834 100644 --- a/src/plugins/projectexplorer/codestylesettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/codestylesettingspropertiespage.cpp @@ -44,7 +44,7 @@ CodeStyleSettingsWidget::CodeStyleSettingsWidget(Project *project) : QWidget(), Utils::Id languageId = factory->languageId(); ICodeStylePreferences *codeStylePreferences = config->codeStyle(languageId); - auto preview = factory->createCodeStyleEditor(codeStylePreferences, m_ui.stackedWidget); + auto preview = factory->createCodeStyleEditor(codeStylePreferences, project, m_ui.stackedWidget); if (preview && preview->layout()) preview->layout()->setContentsMargins(QMargins()); m_ui.stackedWidget->addWidget(preview); diff --git a/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp b/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp index f47833d49e7..7b280e6e4f0 100644 --- a/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp +++ b/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp @@ -71,9 +71,12 @@ TextEditor::ICodeStylePreferences *QmlJSCodeStylePreferencesFactory::createCodeS return new TextEditor::SimpleCodeStylePreferences(); } -QWidget *QmlJSCodeStylePreferencesFactory::createEditor(TextEditor::ICodeStylePreferences *preferences, - QWidget *parent) const +QWidget *QmlJSCodeStylePreferencesFactory::createEditor( + TextEditor::ICodeStylePreferences *preferences, + ProjectExplorer::Project *project, + QWidget *parent) const { + Q_UNUSED(project) auto widget = new Internal::QmlJSCodeStylePreferencesWidget(parent); widget->layout()->setContentsMargins(0, 0, 0, 0); widget->setPreferences(preferences); diff --git a/src/plugins/qmljstools/qmljscodestylepreferencesfactory.h b/src/plugins/qmljstools/qmljscodestylepreferencesfactory.h index 42f904be7cd..eee110704a9 100644 --- a/src/plugins/qmljstools/qmljscodestylepreferencesfactory.h +++ b/src/plugins/qmljstools/qmljscodestylepreferencesfactory.h @@ -38,6 +38,7 @@ public: QString displayName() override; TextEditor::ICodeStylePreferences *createCodeStyle() const override; QWidget *createEditor(TextEditor::ICodeStylePreferences *settings, + ProjectExplorer::Project *project, QWidget *parent) const override; TextEditor::Indenter *createIndenter(QTextDocument *doc) const override; QString snippetProviderGroupId() const override; diff --git a/src/plugins/texteditor/codestyleeditor.cpp b/src/plugins/texteditor/codestyleeditor.cpp index 8dc50286f89..f51d32e2ab6 100644 --- a/src/plugins/texteditor/codestyleeditor.cpp +++ b/src/plugins/texteditor/codestyleeditor.cpp @@ -42,13 +42,15 @@ using namespace TextEditor; CodeStyleEditor::CodeStyleEditor(ICodeStylePreferencesFactory *factory, - ICodeStylePreferences *codeStyle, QWidget *parent) - : CodeStyleEditorWidget(parent), - m_factory(factory), - m_codeStyle(codeStyle) + ICodeStylePreferences *codeStyle, + ProjectExplorer::Project *project, + QWidget *parent) + : CodeStyleEditorWidget(parent) + , m_factory(factory) + , m_codeStyle(codeStyle) { m_layout = new QVBoxLayout(this); - auto selector = new CodeStyleSelectorWidget(factory, this); + auto selector = new CodeStyleSelectorWidget(factory, project, this); selector->setCodeStyle(codeStyle); m_preview = new SnippetEditorWidget(this); DisplaySettings displaySettings = m_preview->displaySettings(); diff --git a/src/plugins/texteditor/codestyleeditor.h b/src/plugins/texteditor/codestyleeditor.h index 613463c75bb..688672b4896 100644 --- a/src/plugins/texteditor/codestyleeditor.h +++ b/src/plugins/texteditor/codestyleeditor.h @@ -33,6 +33,7 @@ QT_BEGIN_NAMESPACE class QVBoxLayout; QT_END_NAMESPACE +namespace ProjectExplorer { class Project; } namespace TextEditor { class ICodeStylePreferencesFactory; @@ -44,7 +45,9 @@ class TEXTEDITOR_EXPORT CodeStyleEditor : public CodeStyleEditorWidget Q_OBJECT public: CodeStyleEditor(ICodeStylePreferencesFactory *factory, - ICodeStylePreferences *codeStyle, QWidget *parent = nullptr); + ICodeStylePreferences *codeStyle, + ProjectExplorer::Project *project = nullptr, + QWidget *parent = nullptr); private: void updatePreview(); diff --git a/src/plugins/texteditor/codestyleselectorwidget.cpp b/src/plugins/texteditor/codestyleselectorwidget.cpp index 3e06dcea10a..061e24d91b5 100644 --- a/src/plugins/texteditor/codestyleselectorwidget.cpp +++ b/src/plugins/texteditor/codestyleselectorwidget.cpp @@ -52,8 +52,10 @@ class CodeStyleDialog : public QDialog { Q_OBJECT public: - CodeStyleDialog(ICodeStylePreferencesFactory *factory, - ICodeStylePreferences *codeStyle, QWidget *parent = nullptr); + explicit CodeStyleDialog(ICodeStylePreferencesFactory *factory, + ICodeStylePreferences *codeStyle, + ProjectExplorer::Project *project = nullptr, + QWidget *parent = nullptr); ~CodeStyleDialog() override; ICodeStylePreferences *codeStyle() const; private: @@ -69,7 +71,9 @@ private: }; CodeStyleDialog::CodeStyleDialog(ICodeStylePreferencesFactory *factory, - ICodeStylePreferences *codeStyle, QWidget *parent) + ICodeStylePreferences *codeStyle, + ProjectExplorer::Project *project, + QWidget *parent) : QDialog(parent) { setWindowTitle(tr("Edit Code Style")); @@ -104,7 +108,7 @@ CodeStyleDialog::CodeStyleDialog(ICodeStylePreferencesFactory *factory, m_codeStyle->setValue(codeStyle->value()); m_codeStyle->setId(codeStyle->id()); m_codeStyle->setDisplayName(m_originalDisplayName); - QWidget *editor = factory->createEditor(m_codeStyle, this); + QWidget *editor = factory->createEditor(m_codeStyle, project, this); m_buttons = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); @@ -153,10 +157,13 @@ CodeStyleDialog::~CodeStyleDialog() } // Internal -CodeStyleSelectorWidget::CodeStyleSelectorWidget(ICodeStylePreferencesFactory *factory, QWidget *parent) : - QWidget(parent), - m_factory(factory), - m_ui(new Internal::Ui::CodeStyleSelectorWidget) +CodeStyleSelectorWidget::CodeStyleSelectorWidget(ICodeStylePreferencesFactory *factory, + ProjectExplorer::Project *project, + QWidget *parent) + : QWidget(parent) + , m_factory(factory) + , m_project(project) + , m_ui(new Internal::Ui::CodeStyleSelectorWidget) { m_ui->setupUi(this); m_ui->importButton->setEnabled(false); @@ -283,7 +290,7 @@ void CodeStyleSelectorWidget::slotEditClicked() ICodeStylePreferences *codeStyle = m_codeStyle->currentPreferences(); // check if it's read-only - Internal::CodeStyleDialog dialog(m_factory, codeStyle, this); + Internal::CodeStyleDialog dialog(m_factory, codeStyle, m_project, this); if (dialog.exec() == QDialog::Accepted) { ICodeStylePreferences *dialogCodeStyle = dialog.codeStyle(); if (codeStyle->isReadOnly()) { diff --git a/src/plugins/texteditor/codestyleselectorwidget.h b/src/plugins/texteditor/codestyleselectorwidget.h index bac911bc899..aca7f9bcacc 100644 --- a/src/plugins/texteditor/codestyleselectorwidget.h +++ b/src/plugins/texteditor/codestyleselectorwidget.h @@ -29,6 +29,7 @@ #include <QWidget> +namespace ProjectExplorer { class Project; } namespace TextEditor { namespace Internal { namespace Ui { class CodeStyleSelectorWidget; } } @@ -40,7 +41,9 @@ class TEXTEDITOR_EXPORT CodeStyleSelectorWidget : public QWidget { Q_OBJECT public: - explicit CodeStyleSelectorWidget(ICodeStylePreferencesFactory *factory, QWidget *parent = nullptr); + explicit CodeStyleSelectorWidget(ICodeStylePreferencesFactory *factory, + ProjectExplorer::Project *project = nullptr, + QWidget *parent = nullptr); ~CodeStyleSelectorWidget() override; void setCodeStyle(TextEditor::ICodeStylePreferences *codeStyle); @@ -60,6 +63,7 @@ private: void updateName(ICodeStylePreferences *codeStyle); ICodeStylePreferencesFactory *m_factory; ICodeStylePreferences *m_codeStyle = nullptr; + ProjectExplorer::Project *m_project = nullptr; QString displayName(ICodeStylePreferences *codeStyle) const; diff --git a/src/plugins/texteditor/icodestylepreferencesfactory.cpp b/src/plugins/texteditor/icodestylepreferencesfactory.cpp index e5efa95af05..89eb961b131 100644 --- a/src/plugins/texteditor/icodestylepreferencesfactory.cpp +++ b/src/plugins/texteditor/icodestylepreferencesfactory.cpp @@ -34,7 +34,7 @@ ICodeStylePreferencesFactory::ICodeStylePreferencesFactory() } CodeStyleEditorWidget *ICodeStylePreferencesFactory::createCodeStyleEditor( - ICodeStylePreferences *codeStyle, QWidget *parent) + ICodeStylePreferences *codeStyle, ProjectExplorer::Project *project, QWidget *parent) { - return new CodeStyleEditor(this, codeStyle, parent); + return new CodeStyleEditor(this, codeStyle, project, parent); } diff --git a/src/plugins/texteditor/icodestylepreferencesfactory.h b/src/plugins/texteditor/icodestylepreferencesfactory.h index ab95039da36..123c88b8739 100644 --- a/src/plugins/texteditor/icodestylepreferencesfactory.h +++ b/src/plugins/texteditor/icodestylepreferencesfactory.h @@ -33,6 +33,8 @@ #include <QWidget> +namespace ProjectExplorer { class Project; } + namespace TextEditor { class ICodeStylePreferences; @@ -57,11 +59,14 @@ public: virtual ~ICodeStylePreferencesFactory() = default; virtual CodeStyleEditorWidget *createCodeStyleEditor(ICodeStylePreferences *codeStyle, + ProjectExplorer::Project *project = nullptr, QWidget *parent = nullptr); virtual Utils::Id languageId() = 0; virtual QString displayName() = 0; virtual ICodeStylePreferences *createCodeStyle() const = 0; - virtual QWidget *createEditor(ICodeStylePreferences *preferences, QWidget *parent) const = 0; + virtual QWidget *createEditor(ICodeStylePreferences *preferences, + ProjectExplorer::Project *project = nullptr, + QWidget *parent = nullptr) const = 0; virtual TextEditor::Indenter *createIndenter(QTextDocument *doc) const = 0; virtual QString snippetProviderGroupId() const = 0; virtual QString previewText() const = 0; |