diff --git a/src/plugins/diffeditor/selectabletexteditorwidget.cpp b/src/plugins/diffeditor/selectabletexteditorwidget.cpp index 781b7a8c513..9be6fce913f 100644 --- a/src/plugins/diffeditor/selectabletexteditorwidget.cpp +++ b/src/plugins/diffeditor/selectabletexteditorwidget.cpp @@ -2,12 +2,17 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #include "selectabletexteditorwidget.h" + +#include #include #include +#include #include #include +using namespace TextEditor; + namespace DiffEditor { namespace Internal { @@ -16,6 +21,15 @@ SelectableTextEditorWidget::SelectableTextEditorWidget(Utils::Id id, QWidget *pa { setFrameStyle(QFrame::NoFrame); setupFallBackEditor(id); + + setReadOnly(true); + + connect(TextEditorSettings::instance(), &TextEditorSettings::displaySettingsChanged, + this, &SelectableTextEditorWidget::setDisplaySettings); + SelectableTextEditorWidget::setDisplaySettings(TextEditorSettings::displaySettings()); + + setCodeStyle(TextEditorSettings::codeStyle()); + setCodeFoldingSupported(true); } SelectableTextEditorWidget::~SelectableTextEditorWidget() = default; @@ -25,6 +39,16 @@ void SelectableTextEditorWidget::setSelections(const DiffSelections &selections) m_diffSelections = selections; } +void SelectableTextEditorWidget::setDisplaySettings(const DisplaySettings &displaySettings) +{ + DisplaySettings settings = displaySettings; + settings.m_textWrapping = false; + settings.m_displayLineNumbers = true; + settings.m_markTextChanges = false; + settings.m_highlightBlocks = false; + TextEditorWidget::setDisplaySettings(settings); +} + static QList subtractSelection( const DiffSelection &minuendSelection, const DiffSelection &subtrahendSelection) @@ -84,7 +108,7 @@ DiffSelections SelectableTextEditorWidget::polishedSelections(const DiffSelectio void SelectableTextEditorWidget::setFoldingIndent(const QTextBlock &block, int indent) { - if (TextEditor::TextBlockUserData *userData = TextEditor::TextDocumentLayout::userData(block)) + if (TextBlockUserData *userData = TextDocumentLayout::userData(block)) userData->setFoldingIndent(indent); } diff --git a/src/plugins/diffeditor/selectabletexteditorwidget.h b/src/plugins/diffeditor/selectabletexteditorwidget.h index eb82b7b5384..97a73c91c14 100644 --- a/src/plugins/diffeditor/selectabletexteditorwidget.h +++ b/src/plugins/diffeditor/selectabletexteditorwidget.h @@ -5,6 +5,8 @@ #include +namespace TextEditor { class DisplaySettings; } + namespace DiffEditor { namespace Internal { @@ -29,6 +31,8 @@ public: ~SelectableTextEditorWidget() override; void setSelections(const DiffSelections &selections); + void setDisplaySettings(const TextEditor::DisplaySettings &displaySettings) override; + static DiffSelections polishedSelections(const DiffSelections &selections); static void setFoldingIndent(const QTextBlock &block, int indent); diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp index 952eea642f9..7a17d4f1109 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp @@ -55,7 +55,7 @@ public: void setFolded(int blockNumber, bool folded); - void setDisplaySettings(const DisplaySettings &ds) override; + void setDisplaySettings(const DisplaySettings &displaySettings) override; SideDiffData diffData() const { return m_data; } void setDiffData(const SideDiffData &data) { m_data = data; } @@ -119,13 +119,6 @@ private: SideDiffEditorWidget::SideDiffEditorWidget(QWidget *parent) : SelectableTextEditorWidget("DiffEditor.SideDiffEditor", parent) { - DisplaySettings settings = displaySettings(); - settings.m_textWrapping = false; - settings.m_displayLineNumbers = true; - settings.m_markTextChanges = false; - settings.m_highlightBlocks = false; - SelectableTextEditorWidget::setDisplaySettings(settings); - connect(this, &TextEditorWidget::tooltipRequested, this, [this](const QPoint &point, int position) { const int block = document()->findBlock(position).blockNumber(); const auto it = m_data.m_fileInfo.constFind(block); @@ -139,7 +132,6 @@ SideDiffEditorWidget::SideDiffEditorWidget(QWidget *parent) if (documentLayout) connect(documentLayout, &TextDocumentLayout::foldChanged, this, &SideDiffEditorWidget::foldChanged); - setCodeFoldingSupported(true); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); } @@ -176,14 +168,9 @@ void SideDiffEditorWidget::setFolded(int blockNumber, bool folded) documentLayout->emitDocumentSizeChanged(); } -void SideDiffEditorWidget::setDisplaySettings(const DisplaySettings &ds) +void SideDiffEditorWidget::setDisplaySettings(const DisplaySettings &displaySettings) { - DisplaySettings settings = displaySettings(); - settings.m_visualizeWhitespace = ds.m_visualizeWhitespace; - settings.m_displayFoldingMarkers = ds.m_displayFoldingMarkers; - settings.m_scrollBarHighlights = ds.m_scrollBarHighlights; - settings.m_highlightCurrentLine = ds.m_highlightCurrentLine; - SelectableTextEditorWidget::setDisplaySettings(settings); + SelectableTextEditorWidget::setDisplaySettings(displaySettings); emit gotDisplaySettings(); } @@ -714,8 +701,6 @@ SideBySideDiffEditorWidget::SideBySideDiffEditorWidget(QWidget *parent) { auto setupEditor = [this](DiffSide side) { m_editor[side] = new SideDiffEditorWidget(this); - m_editor[side]->setReadOnly(true); - m_editor[side]->setCodeStyle(TextEditorSettings::codeStyle()); connect(m_editor[side], &SideDiffEditorWidget::jumpToOriginalFileRequested, this, std::bind(&SideBySideDiffEditorWidget::jumpToOriginalFileRequested, this, diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp index b977c159af2..6b4571b71e7 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp @@ -16,7 +16,6 @@ #include #include -#include #include #include #include @@ -37,20 +36,6 @@ UnifiedDiffEditorWidget::UnifiedDiffEditorWidget(QWidget *parent) : SelectableTextEditorWidget("DiffEditor.UnifiedDiffEditor", parent) , m_controller(this) { - setReadOnly(true); - - DisplaySettings settings = displaySettings(); - settings.m_textWrapping = false; - settings.m_displayLineNumbers = true; - settings.m_markTextChanges = false; - settings.m_highlightBlocks = false; - SelectableTextEditorWidget::setDisplaySettings(settings); - connect(TextEditorSettings::instance(), &TextEditorSettings::displaySettingsChanged, - this, &UnifiedDiffEditorWidget::setDisplaySettings); - setDisplaySettings(TextEditorSettings::displaySettings()); - - setCodeStyle(TextEditorSettings::codeStyle()); - connect(TextEditorSettings::instance(), &TextEditorSettings::fontSettingsChanged, this, &UnifiedDiffEditorWidget::setFontSettings); setFontSettings(TextEditorSettings::fontSettings()); @@ -64,7 +49,6 @@ UnifiedDiffEditorWidget::UnifiedDiffEditorWidget(QWidget *parent) context->setWidget(this); context->setContext(Core::Context(Constants::UNIFIED_VIEW_ID)); Core::ICore::addContextObject(context); - setCodeFoldingSupported(true); } UnifiedDiffEditorWidget::~UnifiedDiffEditorWidget() @@ -105,16 +89,6 @@ void UnifiedDiffEditorWidget::restoreState() m_state.clear(); } -void UnifiedDiffEditorWidget::setDisplaySettings(const DisplaySettings &ds) -{ - DisplaySettings settings = displaySettings(); - settings.m_visualizeWhitespace = ds.m_visualizeWhitespace; - settings.m_displayFoldingMarkers = ds.m_displayFoldingMarkers; - settings.m_scrollBarHighlights = ds.m_scrollBarHighlights; - settings.m_highlightCurrentLine = ds.m_highlightCurrentLine; - SelectableTextEditorWidget::setDisplaySettings(settings); -} - void UnifiedDiffEditorWidget::setFontSettings(const FontSettings &fontSettings) { m_controller.setFontSettings(fontSettings); diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.h b/src/plugins/diffeditor/unifieddiffeditorwidget.h index 5320e6d0174..4555ac2081f 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.h +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.h @@ -10,10 +10,7 @@ namespace Core { class IContext; } -namespace TextEditor { -class DisplaySettings; -class FontSettings; -} +namespace TextEditor { class FontSettings; } namespace DiffEditor { @@ -80,7 +77,6 @@ public: void restoreState(); void clear(const QString &message = {}); - void setDisplaySettings(const TextEditor::DisplaySettings &ds) override; signals: void currentDiffFileIndexChanged(int index);