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 <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2024-11-26 12:02:42 +01:00
parent baf02224a2
commit d9016f917e
12 changed files with 42 additions and 48 deletions

View File

@@ -507,7 +507,7 @@ void CppCodeStylePreferencesWidget::updatePreview()
QtStyleCodeFormatter formatter(ts, ccss); QtStyleCodeFormatter formatter(ts, ccss);
for (SnippetEditorWidget *preview : std::as_const(d->m_previews)) { for (SnippetEditorWidget *preview : std::as_const(d->m_previews)) {
preview->textDocument()->setTabSettings(ts); preview->textDocument()->setTabSettings(ts);
preview->setCodeStyle(cppCodeStylePreferences); preview->textDocument()->setCodeStyle(cppCodeStylePreferences);
QTextDocument *doc = preview->document(); QTextDocument *doc = preview->document();
formatter.invalidateCache(doc); formatter.invalidateCache(doc);

View File

@@ -171,6 +171,12 @@ void CppEditorDocument::applyFontSettings()
m_processor->semanticRehighlight(); m_processor->semanticRehighlight();
} }
void CppEditorDocument::slotCodeStyleSettingsChanged()
{
QtStyleCodeFormatter formatter;
formatter.invalidateCache(document());
}
void CppEditorDocument::invalidateFormatterCache() void CppEditorDocument::invalidateFormatterCache()
{ {
QtStyleCodeFormatter formatter; QtStyleCodeFormatter formatter;

View File

@@ -68,6 +68,7 @@ signals:
protected: protected:
void applyFontSettings() override; void applyFontSettings() override;
Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override;
void slotCodeStyleSettingsChanged() override;
private: private:
void invalidateFormatterCache(); void invalidateFormatterCache();

View File

@@ -1246,12 +1246,6 @@ bool CppEditorWidget::handleStringSplitting(QKeyEvent *e) const
return false; return false;
} }
void CppEditorWidget::slotCodeStyleSettingsChanged(const QVariant &)
{
QtStyleCodeFormatter formatter;
formatter.invalidateCache(document());
}
void CppEditorWidget::updateSemanticInfo() void CppEditorWidget::updateSemanticInfo()
{ {
updateSemanticInfo(d->m_cppEditorDocument->recalculateSemanticInfo(), updateSemanticInfo(d->m_cppEditorDocument->recalculateSemanticInfo(),

View File

@@ -115,8 +115,6 @@ protected:
bool resolveTarget = true, bool resolveTarget = true,
bool inNextSplit = false) override; bool inNextSplit = false) override;
void slotCodeStyleSettingsChanged(const QVariant &) override;
private: private:
void updateFunctionDeclDefLink(); void updateFunctionDeclDefLink();
void updateFunctionDeclDefLinkNow(); void updateFunctionDeclDefLinkNow();

View File

@@ -27,7 +27,7 @@ SelectableTextEditorWidget::SelectableTextEditorWidget(Utils::Id id, QWidget *pa
this, &SelectableTextEditorWidget::setDisplaySettings); this, &SelectableTextEditorWidget::setDisplaySettings);
SelectableTextEditorWidget::setDisplaySettings(TextEditorSettings::displaySettings()); SelectableTextEditorWidget::setDisplaySettings(TextEditorSettings::displaySettings());
setCodeStyle(TextEditorSettings::codeStyle()); textDocument()->setCodeStyle(TextEditorSettings::codeStyle());
setCodeFoldingSupported(true); setCodeFoldingSupported(true);
} }

View File

@@ -234,7 +234,7 @@ void EditorConfiguration::configureEditor(BaseTextEditor *textEditor) const
{ {
TextEditorWidget *widget = textEditor->editorWidget(); TextEditorWidget *widget = textEditor->editorWidget();
if (widget) if (widget)
widget->setCodeStyle(codeStyle(widget->languageSettingsId())); widget->textDocument()->setCodeStyle(codeStyle(widget->languageSettingsId()));
if (!d->m_useGlobal) { if (!d->m_useGlobal) {
textEditor->textDocument()->setCodec(d->m_textCodec); textEditor->textDocument()->setCodec(d->m_textCodec);
if (widget) if (widget)
@@ -250,7 +250,7 @@ void EditorConfiguration::deconfigureEditor(BaseTextEditor *textEditor) const
{ {
TextEditorWidget *widget = textEditor->editorWidget(); TextEditorWidget *widget = textEditor->editorWidget();
if (widget) if (widget)
widget->setCodeStyle(TextEditorSettings::codeStyle(widget->languageSettingsId())); widget->textDocument()->setCodeStyle(TextEditorSettings::codeStyle(widget->languageSettingsId()));
d->m_editors.removeOne(textEditor); d->m_editors.removeOne(textEditor);

View File

@@ -86,7 +86,7 @@ CodeStyleEditor::CodeStyleEditor(ICodeStylePreferencesFactory *factory,
indenter->setFileName(fileName); indenter->setFileName(fileName);
m_preview->textDocument()->setIndenter(indenter); m_preview->textDocument()->setIndenter(indenter);
} else { } else {
m_preview->setCodeStyle(codeStyle); m_preview->textDocument()->setCodeStyle(codeStyle);
} }
updatePreview(); updatePreview();

View File

@@ -5,6 +5,7 @@
#include "extraencodingsettings.h" #include "extraencodingsettings.h"
#include "fontsettings.h" #include "fontsettings.h"
#include "icodestylepreferences.h"
#include "storagesettings.h" #include "storagesettings.h"
#include "syntaxhighlighter.h" #include "syntaxhighlighter.h"
#include "tabsettings.h" #include "tabsettings.h"
@@ -76,6 +77,7 @@ public:
QString m_suggestedFileName; QString m_suggestedFileName;
TypingSettings m_typingSettings; TypingSettings m_typingSettings;
StorageSettings m_storageSettings; StorageSettings m_storageSettings;
ICodeStylePreferences *m_codeStylePreferences = nullptr;
TabSettings m_tabSettings; TabSettings m_tabSettings;
ExtraEncodingSettings m_extraEncodingSettings; ExtraEncodingSettings m_extraEncodingSettings;
FontSettings m_fontSettings; FontSettings m_fontSettings;
@@ -457,6 +459,26 @@ IAssistProvider *TextDocument::quickFixAssistProvider() const
return d->m_quickFixProvider; 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() void TextDocument::applyFontSettings()
{ {
d->m_fontSettingsNeedsApply = false; d->m_fontSettingsNeedsApply = false;
@@ -470,6 +492,8 @@ void TextDocument::applyFontSettings()
d->m_highlighter->setFontSettings(d->m_fontSettings); d->m_highlighter->setFontSettings(d->m_fontSettings);
} }
void TextDocument::slotCodeStyleSettingsChanged() { }
const FontSettings &TextDocument::fontSettings() const const FontSettings &TextDocument::fontSettings() const
{ {
return d->m_fontSettings; return d->m_fontSettings;

View File

@@ -139,6 +139,7 @@ public:
void setQuickFixAssistProvider(IAssistProvider *provider) const; void setQuickFixAssistProvider(IAssistProvider *provider) const;
virtual IAssistProvider *quickFixAssistProvider() const; virtual IAssistProvider *quickFixAssistProvider() const;
void setCodeStyle(ICodeStylePreferences *preferences);
void setTabSettings(const TextEditor::TabSettings &tabSettings); void setTabSettings(const TextEditor::TabSettings &tabSettings);
void setFontSettings(const TextEditor::FontSettings &fontSettings); void setFontSettings(const TextEditor::FontSettings &fontSettings);
@@ -163,6 +164,7 @@ signals:
protected: protected:
virtual void applyFontSettings(); virtual void applyFontSettings();
Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override;
virtual void slotCodeStyleSettingsChanged(); // Used in CppEditorDocumet
private: private:
OpenResult openImpl(QString *errorString, OpenResult openImpl(QString *errorString,

View File

@@ -359,6 +359,7 @@ private:
})); }));
} }
tabSize->addActions(tabSizeGroup->actions()); tabSize->addActions(tabSizeGroup->actions());
menu->popup(QCursor::pos()); menu->popup(QCursor::pos());
} }
@@ -896,7 +897,6 @@ public:
QWidget *m_extraArea = nullptr; QWidget *m_extraArea = nullptr;
Id m_tabSettingsId; Id m_tabSettingsId;
ICodeStylePreferences *m_codeStylePreferences = nullptr;
DisplaySettings m_displaySettings; DisplaySettings m_displaySettings;
bool m_annotationsrRight = true; bool m_annotationsrRight = true;
MarginSettings m_marginSettings; MarginSettings m_marginSettings;
@@ -1592,7 +1592,7 @@ void TextEditorWidgetPrivate::setDocument(const QSharedPointer<TextDocument> &do
q->setDisplaySettings(TextEditorSettings::displaySettings()); q->setDisplaySettings(TextEditorSettings::displaySettings());
q->setCompletionSettings(TextEditorSettings::completionSettings()); q->setCompletionSettings(TextEditorSettings::completionSettings());
q->setExtraEncodingSettings(globalExtraEncodingSettings()); q->setExtraEncodingSettings(globalExtraEncodingSettings());
q->setCodeStyle(TextEditorSettings::codeStyle(m_tabSettingsId)); q->textDocument()->setCodeStyle(TextEditorSettings::codeStyle(m_tabSettingsId));
m_blockCount = doc->document()->blockCount(); m_blockCount = doc->document()->blockCount();
@@ -7707,7 +7707,8 @@ void TextEditorWidgetPrivate::toggleBlockVisible(const QTextBlock &block)
void TextEditorWidget::setLanguageSettingsId(Id settingsId) void TextEditorWidget::setLanguageSettingsId(Id settingsId)
{ {
d->m_tabSettingsId = settingsId; d->m_tabSettingsId = settingsId;
setCodeStyle(TextEditorSettings::codeStyle(settingsId)); if (auto doc = textDocument())
doc->setCodeStyle(TextEditorSettings::codeStyle(settingsId));
} }
Id TextEditorWidget::languageSettingsId() const Id TextEditorWidget::languageSettingsId() const
@@ -7715,35 +7716,6 @@ Id TextEditorWidget::languageSettingsId() const
return d->m_tabSettingsId; 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 const DisplaySettings &TextEditorWidget::displaySettings() const
{ {
return d->m_displaySettings; return d->m_displaySettings;

View File

@@ -319,8 +319,6 @@ public:
void setLanguageSettingsId(Utils::Id settingsId); void setLanguageSettingsId(Utils::Id settingsId);
Utils::Id languageSettingsId() const; Utils::Id languageSettingsId() const;
void setCodeStyle(ICodeStylePreferences *settings);
const DisplaySettings &displaySettings() const; const DisplaySettings &displaySettings() const;
const MarginSettings &marginSettings() const; const MarginSettings &marginSettings() const;
const BehaviorSettings &behaviorSettings() const; const BehaviorSettings &behaviorSettings() const;
@@ -689,7 +687,6 @@ signals:
protected: protected:
virtual void slotCursorPositionChanged(); // Used in VcsBase virtual void slotCursorPositionChanged(); // Used in VcsBase
virtual void slotCodeStyleSettingsChanged(const QVariant &); // Used in CppEditor
private: private:
std::unique_ptr<Internal::TextEditorWidgetPrivate> d; std::unique_ptr<Internal::TextEditorWidgetPrivate> d;