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;