From d9016f917e562c8d241772263b4dff5a18864ba4 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 26 Nov 2024 12:02:42 +0100 Subject: [PATCH] Editor: move code setCodeStyle from widget to document The information was only used in the document and it does not make any sense to change it for different widgets in different ways. Change-Id: I1d7c4548c4bd02c3dfa8f27065e440b7469653b1 Reviewed-by: Christian Stenger --- .../cppeditor/cppcodestylesettingspage.cpp | 2 +- src/plugins/cppeditor/cppeditordocument.cpp | 6 ++++ src/plugins/cppeditor/cppeditordocument.h | 1 + src/plugins/cppeditor/cppeditorwidget.cpp | 6 ---- src/plugins/cppeditor/cppeditorwidget.h | 2 -- .../diffeditor/selectabletexteditorwidget.cpp | 2 +- .../projectexplorer/editorconfiguration.cpp | 4 +-- src/plugins/texteditor/codestyleeditor.cpp | 2 +- src/plugins/texteditor/textdocument.cpp | 24 +++++++++++++ src/plugins/texteditor/textdocument.h | 2 ++ src/plugins/texteditor/texteditor.cpp | 36 +++---------------- src/plugins/texteditor/texteditor.h | 3 -- 12 files changed, 42 insertions(+), 48 deletions(-) diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.cpp b/src/plugins/cppeditor/cppcodestylesettingspage.cpp index 55c3e5b8235..500b6ae9bdb 100644 --- a/src/plugins/cppeditor/cppcodestylesettingspage.cpp +++ b/src/plugins/cppeditor/cppcodestylesettingspage.cpp @@ -507,7 +507,7 @@ void CppCodeStylePreferencesWidget::updatePreview() QtStyleCodeFormatter formatter(ts, ccss); for (SnippetEditorWidget *preview : std::as_const(d->m_previews)) { preview->textDocument()->setTabSettings(ts); - preview->setCodeStyle(cppCodeStylePreferences); + preview->textDocument()->setCodeStyle(cppCodeStylePreferences); QTextDocument *doc = preview->document(); formatter.invalidateCache(doc); diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp index 297e1d81462..8b0735e076e 100644 --- a/src/plugins/cppeditor/cppeditordocument.cpp +++ b/src/plugins/cppeditor/cppeditordocument.cpp @@ -171,6 +171,12 @@ void CppEditorDocument::applyFontSettings() m_processor->semanticRehighlight(); } +void CppEditorDocument::slotCodeStyleSettingsChanged() +{ + QtStyleCodeFormatter formatter; + formatter.invalidateCache(document()); +} + void CppEditorDocument::invalidateFormatterCache() { QtStyleCodeFormatter formatter; diff --git a/src/plugins/cppeditor/cppeditordocument.h b/src/plugins/cppeditor/cppeditordocument.h index 02946c60278..60c171c072d 100644 --- a/src/plugins/cppeditor/cppeditordocument.h +++ b/src/plugins/cppeditor/cppeditordocument.h @@ -68,6 +68,7 @@ signals: protected: void applyFontSettings() override; Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + void slotCodeStyleSettingsChanged() override; private: void invalidateFormatterCache(); diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp index 4a0f1fb429b..e2bd2ef93e5 100644 --- a/src/plugins/cppeditor/cppeditorwidget.cpp +++ b/src/plugins/cppeditor/cppeditorwidget.cpp @@ -1246,12 +1246,6 @@ bool CppEditorWidget::handleStringSplitting(QKeyEvent *e) const return false; } -void CppEditorWidget::slotCodeStyleSettingsChanged(const QVariant &) -{ - QtStyleCodeFormatter formatter; - formatter.invalidateCache(document()); -} - void CppEditorWidget::updateSemanticInfo() { updateSemanticInfo(d->m_cppEditorDocument->recalculateSemanticInfo(), diff --git a/src/plugins/cppeditor/cppeditorwidget.h b/src/plugins/cppeditor/cppeditorwidget.h index caad6b89d55..d554c4588eb 100644 --- a/src/plugins/cppeditor/cppeditorwidget.h +++ b/src/plugins/cppeditor/cppeditorwidget.h @@ -115,8 +115,6 @@ protected: bool resolveTarget = true, bool inNextSplit = false) override; - void slotCodeStyleSettingsChanged(const QVariant &) override; - private: void updateFunctionDeclDefLink(); void updateFunctionDeclDefLinkNow(); diff --git a/src/plugins/diffeditor/selectabletexteditorwidget.cpp b/src/plugins/diffeditor/selectabletexteditorwidget.cpp index af7ed7f3d16..41662250cd1 100644 --- a/src/plugins/diffeditor/selectabletexteditorwidget.cpp +++ b/src/plugins/diffeditor/selectabletexteditorwidget.cpp @@ -27,7 +27,7 @@ SelectableTextEditorWidget::SelectableTextEditorWidget(Utils::Id id, QWidget *pa this, &SelectableTextEditorWidget::setDisplaySettings); SelectableTextEditorWidget::setDisplaySettings(TextEditorSettings::displaySettings()); - setCodeStyle(TextEditorSettings::codeStyle()); + textDocument()->setCodeStyle(TextEditorSettings::codeStyle()); setCodeFoldingSupported(true); } diff --git a/src/plugins/projectexplorer/editorconfiguration.cpp b/src/plugins/projectexplorer/editorconfiguration.cpp index 2f40e48159d..bb0cc2fe24d 100644 --- a/src/plugins/projectexplorer/editorconfiguration.cpp +++ b/src/plugins/projectexplorer/editorconfiguration.cpp @@ -234,7 +234,7 @@ void EditorConfiguration::configureEditor(BaseTextEditor *textEditor) const { TextEditorWidget *widget = textEditor->editorWidget(); if (widget) - widget->setCodeStyle(codeStyle(widget->languageSettingsId())); + widget->textDocument()->setCodeStyle(codeStyle(widget->languageSettingsId())); if (!d->m_useGlobal) { textEditor->textDocument()->setCodec(d->m_textCodec); if (widget) @@ -250,7 +250,7 @@ void EditorConfiguration::deconfigureEditor(BaseTextEditor *textEditor) const { TextEditorWidget *widget = textEditor->editorWidget(); if (widget) - widget->setCodeStyle(TextEditorSettings::codeStyle(widget->languageSettingsId())); + widget->textDocument()->setCodeStyle(TextEditorSettings::codeStyle(widget->languageSettingsId())); d->m_editors.removeOne(textEditor); diff --git a/src/plugins/texteditor/codestyleeditor.cpp b/src/plugins/texteditor/codestyleeditor.cpp index c740505895b..9ee1f84b37f 100644 --- a/src/plugins/texteditor/codestyleeditor.cpp +++ b/src/plugins/texteditor/codestyleeditor.cpp @@ -86,7 +86,7 @@ CodeStyleEditor::CodeStyleEditor(ICodeStylePreferencesFactory *factory, indenter->setFileName(fileName); m_preview->textDocument()->setIndenter(indenter); } else { - m_preview->setCodeStyle(codeStyle); + m_preview->textDocument()->setCodeStyle(codeStyle); } updatePreview(); diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp index 0f77c2568da..8cd61342053 100644 --- a/src/plugins/texteditor/textdocument.cpp +++ b/src/plugins/texteditor/textdocument.cpp @@ -5,6 +5,7 @@ #include "extraencodingsettings.h" #include "fontsettings.h" +#include "icodestylepreferences.h" #include "storagesettings.h" #include "syntaxhighlighter.h" #include "tabsettings.h" @@ -76,6 +77,7 @@ public: QString m_suggestedFileName; TypingSettings m_typingSettings; StorageSettings m_storageSettings; + ICodeStylePreferences *m_codeStylePreferences = nullptr; TabSettings m_tabSettings; ExtraEncodingSettings m_extraEncodingSettings; FontSettings m_fontSettings; @@ -457,6 +459,26 @@ IAssistProvider *TextDocument::quickFixAssistProvider() const return d->m_quickFixProvider; } +void TextDocument::setCodeStyle(ICodeStylePreferences *preferences) +{ + indenter()->setCodeStylePreferences(preferences); + if (d->m_codeStylePreferences) { + disconnect(d->m_codeStylePreferences, &ICodeStylePreferences::currentTabSettingsChanged, + this, &TextDocument::setTabSettings); + disconnect(d->m_codeStylePreferences, &ICodeStylePreferences::currentValueChanged, + this, &TextDocument::slotCodeStyleSettingsChanged); + } + d->m_codeStylePreferences = preferences; + if (d->m_codeStylePreferences) { + connect(d->m_codeStylePreferences, &ICodeStylePreferences::currentTabSettingsChanged, + this, &TextDocument::setTabSettings); + connect(d->m_codeStylePreferences, &ICodeStylePreferences::currentValueChanged, + this, &TextDocument::slotCodeStyleSettingsChanged); + setTabSettings(d->m_codeStylePreferences->currentTabSettings()); + slotCodeStyleSettingsChanged(); + } +} + void TextDocument::applyFontSettings() { d->m_fontSettingsNeedsApply = false; @@ -470,6 +492,8 @@ void TextDocument::applyFontSettings() d->m_highlighter->setFontSettings(d->m_fontSettings); } +void TextDocument::slotCodeStyleSettingsChanged() { } + const FontSettings &TextDocument::fontSettings() const { return d->m_fontSettings; diff --git a/src/plugins/texteditor/textdocument.h b/src/plugins/texteditor/textdocument.h index 72ee5a8b6cc..fb97543a477 100644 --- a/src/plugins/texteditor/textdocument.h +++ b/src/plugins/texteditor/textdocument.h @@ -139,6 +139,7 @@ public: void setQuickFixAssistProvider(IAssistProvider *provider) const; virtual IAssistProvider *quickFixAssistProvider() const; + void setCodeStyle(ICodeStylePreferences *preferences); void setTabSettings(const TextEditor::TabSettings &tabSettings); void setFontSettings(const TextEditor::FontSettings &fontSettings); @@ -163,6 +164,7 @@ signals: protected: virtual void applyFontSettings(); Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + virtual void slotCodeStyleSettingsChanged(); // Used in CppEditorDocumet private: OpenResult openImpl(QString *errorString, diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 51fb959b996..4848386104d 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -359,6 +359,7 @@ private: })); } tabSize->addActions(tabSizeGroup->actions()); + menu->popup(QCursor::pos()); } @@ -896,7 +897,6 @@ public: QWidget *m_extraArea = nullptr; Id m_tabSettingsId; - ICodeStylePreferences *m_codeStylePreferences = nullptr; DisplaySettings m_displaySettings; bool m_annotationsrRight = true; MarginSettings m_marginSettings; @@ -1592,7 +1592,7 @@ void TextEditorWidgetPrivate::setDocument(const QSharedPointer &do q->setDisplaySettings(TextEditorSettings::displaySettings()); q->setCompletionSettings(TextEditorSettings::completionSettings()); q->setExtraEncodingSettings(globalExtraEncodingSettings()); - q->setCodeStyle(TextEditorSettings::codeStyle(m_tabSettingsId)); + q->textDocument()->setCodeStyle(TextEditorSettings::codeStyle(m_tabSettingsId)); m_blockCount = doc->document()->blockCount(); @@ -7707,7 +7707,8 @@ void TextEditorWidgetPrivate::toggleBlockVisible(const QTextBlock &block) void TextEditorWidget::setLanguageSettingsId(Id settingsId) { d->m_tabSettingsId = settingsId; - setCodeStyle(TextEditorSettings::codeStyle(settingsId)); + if (auto doc = textDocument()) + doc->setCodeStyle(TextEditorSettings::codeStyle(settingsId)); } Id TextEditorWidget::languageSettingsId() const @@ -7715,35 +7716,6 @@ Id TextEditorWidget::languageSettingsId() const return d->m_tabSettingsId; } -void TextEditorWidget::setCodeStyle(ICodeStylePreferences *preferences) -{ - TextDocument *document = d->m_document.data(); - // Not fully initialized yet... wait for TextEditorWidgetPrivate::setupDocumentSignals - if (!document) - return; - document->indenter()->setCodeStylePreferences(preferences); - if (d->m_codeStylePreferences) { - disconnect(d->m_codeStylePreferences, &ICodeStylePreferences::currentTabSettingsChanged, - document, &TextDocument::setTabSettings); - disconnect(d->m_codeStylePreferences, &ICodeStylePreferences::currentValueChanged, - this, &TextEditorWidget::slotCodeStyleSettingsChanged); - } - d->m_codeStylePreferences = preferences; - if (d->m_codeStylePreferences) { - connect(d->m_codeStylePreferences, &ICodeStylePreferences::currentTabSettingsChanged, - document, &TextDocument::setTabSettings); - connect(d->m_codeStylePreferences, &ICodeStylePreferences::currentValueChanged, - this, &TextEditorWidget::slotCodeStyleSettingsChanged); - document->setTabSettings(d->m_codeStylePreferences->currentTabSettings()); - slotCodeStyleSettingsChanged(d->m_codeStylePreferences->currentValue()); - } -} - -void TextEditorWidget::slotCodeStyleSettingsChanged(const QVariant &) -{ - -} - const DisplaySettings &TextEditorWidget::displaySettings() const { return d->m_displaySettings; diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h index ed2bdf7d775..787ee75a960 100644 --- a/src/plugins/texteditor/texteditor.h +++ b/src/plugins/texteditor/texteditor.h @@ -319,8 +319,6 @@ public: void setLanguageSettingsId(Utils::Id settingsId); Utils::Id languageSettingsId() const; - void setCodeStyle(ICodeStylePreferences *settings); - const DisplaySettings &displaySettings() const; const MarginSettings &marginSettings() const; const BehaviorSettings &behaviorSettings() const; @@ -689,7 +687,6 @@ signals: protected: virtual void slotCursorPositionChanged(); // Used in VcsBase - virtual void slotCodeStyleSettingsChanged(const QVariant &); // Used in CppEditor private: std::unique_ptr d;