forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/9.0'
Conflicts: src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp src/plugins/qmldesigner/components/stateseditornew/propertychangesmodel.cpp src/plugins/qmldesigner/components/stateseditornew/propertymodel.cpp src/plugins/qmldesigner/qmldesignerprojectmanager.cpp src/plugins/qmldesigner/qmldesignerprojectmanager.h Change-Id: Ib029a830ee99190bc4ea2ad75d9300bfa86b42d9
This commit is contained in:
@@ -40,6 +40,7 @@
|
||||
|
||||
static const char settingsGroupC[] = "DiffEditor";
|
||||
static const char descriptionVisibleKeyC[] = "DescriptionVisible";
|
||||
static const char descriptionHeightKeyC[] = "DescriptionHeight";
|
||||
static const char horizontalScrollBarSynchronizationKeyC[] = "HorizontalScrollBarSynchronization";
|
||||
static const char contextLineCountKeyC[] = "ContextLineNumbers";
|
||||
static const char ignoreWhitespaceKeyC[] = "IgnoreWhitespace";
|
||||
@@ -134,13 +135,23 @@ DiffEditor::DiffEditor()
|
||||
// Widget:
|
||||
QSplitter *splitter = new MiniSplitter(Qt::Vertical);
|
||||
|
||||
connect(splitter, &QSplitter::splitterMoved, this, [this, splitter](int pos) {
|
||||
if (!m_showDescription)
|
||||
return;
|
||||
const int lineSpacing = splitter->widget(0)->fontMetrics().lineSpacing();
|
||||
const int descHeight = (pos + lineSpacing - 1) / lineSpacing; // round up
|
||||
if (m_descriptionHeight == descHeight)
|
||||
return;
|
||||
m_descriptionHeight = descHeight;
|
||||
saveSetting(descriptionHeightKeyC, descHeight);
|
||||
});
|
||||
m_descriptionWidget = new DescriptionEditorWidget(splitter);
|
||||
m_descriptionWidget->setReadOnly(true);
|
||||
connect(m_descriptionWidget, &DescriptionEditorWidget::requestResize, this, [splitter] {
|
||||
connect(m_descriptionWidget, &DescriptionEditorWidget::requestResize, this, [this, splitter] {
|
||||
if (splitter->count() == 0)
|
||||
return;
|
||||
QList<int> sizes = splitter->sizes();
|
||||
const int descHeight = splitter->widget(0)->fontMetrics().lineSpacing() * 8;
|
||||
const int descHeight = splitter->widget(0)->fontMetrics().lineSpacing() * m_descriptionHeight;
|
||||
const int diff = descHeight - sizes[0];
|
||||
if (diff > 0) {
|
||||
sizes[0] += diff;
|
||||
@@ -522,6 +533,7 @@ IDiffView *DiffEditor::loadSettings()
|
||||
// Read current settings:
|
||||
s->beginGroup(settingsGroupC);
|
||||
m_showDescription = s->value(descriptionVisibleKeyC, true).toBool();
|
||||
m_descriptionHeight = s->value(descriptionHeightKeyC, 8).toInt();
|
||||
m_sync = s->value(horizontalScrollBarSynchronizationKeyC, true).toBool();
|
||||
m_document->setIgnoreWhitespace(s->value(ignoreWhitespaceKeyC, false).toBool());
|
||||
m_document->setContextLineCount(s->value(contextLineCountKeyC, 3).toInt());
|
||||
|
||||
@@ -88,6 +88,7 @@ private:
|
||||
QPair<QString, QString> m_currentFileChunk;
|
||||
int m_currentViewIndex = -1;
|
||||
int m_currentDiffFileIndex = -1;
|
||||
int m_descriptionHeight = 8;
|
||||
Utils::Guard m_ignoreChanges;
|
||||
bool m_sync = false;
|
||||
bool m_showDescription = true;
|
||||
|
||||
@@ -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 <texteditor/displaysettings.h>
|
||||
#include <texteditor/textdocument.h>
|
||||
#include <texteditor/textdocumentlayout.h>
|
||||
#include <texteditor/texteditorsettings.h>
|
||||
|
||||
#include <QPainter>
|
||||
#include <QTextBlock>
|
||||
|
||||
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<DiffSelection> 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);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
#include <texteditor/texteditor.h>
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -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; }
|
||||
@@ -68,7 +68,6 @@ signals:
|
||||
int diffFileIndex,
|
||||
int chunkIndex,
|
||||
const ChunkSelection &selection);
|
||||
void foldChanged(int blockNumber, bool folded);
|
||||
void gotDisplaySettings();
|
||||
void gotFocus();
|
||||
|
||||
@@ -119,13 +118,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);
|
||||
@@ -135,11 +127,6 @@ SideDiffEditorWidget::SideDiffEditorWidget(QWidget *parent)
|
||||
ToolTip::hide();
|
||||
});
|
||||
|
||||
auto documentLayout = qobject_cast<TextDocumentLayout*>(document()->documentLayout());
|
||||
if (documentLayout)
|
||||
connect(documentLayout, &TextDocumentLayout::foldChanged,
|
||||
this, &SideDiffEditorWidget::foldChanged);
|
||||
setCodeFoldingSupported(true);
|
||||
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||
}
|
||||
|
||||
@@ -176,14 +163,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 +696,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,
|
||||
@@ -789,11 +769,6 @@ SideBySideDiffEditorWidget::SideBySideDiffEditorWidget(QWidget *parent)
|
||||
this, &SideBySideDiffEditorWidget::setFontSettings);
|
||||
setFontSettings(TextEditorSettings::fontSettings());
|
||||
|
||||
connect(m_editor[LeftSide], &SideDiffEditorWidget::foldChanged,
|
||||
m_editor[RightSide], &SideDiffEditorWidget::setFolded);
|
||||
connect(m_editor[RightSide], &SideDiffEditorWidget::foldChanged,
|
||||
m_editor[LeftSide], &SideDiffEditorWidget::setFolded);
|
||||
|
||||
syncHorizontalScrollBarPolicy();
|
||||
|
||||
m_splitter = new MiniSplitter(this);
|
||||
@@ -926,6 +901,16 @@ void SideBySideDiffEditorWidget::showDiff()
|
||||
m_editor[LeftSide]->setReadOnly(true);
|
||||
m_editor[RightSide]->setReadOnly(true);
|
||||
}
|
||||
auto leftDocumentLayout = qobject_cast<TextDocumentLayout*>(
|
||||
m_editor[LeftSide]->document()->documentLayout());
|
||||
auto rightDocumentLayout = qobject_cast<TextDocumentLayout*>(
|
||||
m_editor[RightSide]->document()->documentLayout());
|
||||
if (leftDocumentLayout && rightDocumentLayout) {
|
||||
connect(leftDocumentLayout, &TextDocumentLayout::foldChanged,
|
||||
m_editor[RightSide], &SideDiffEditorWidget::setFolded);
|
||||
connect(rightDocumentLayout, &TextDocumentLayout::foldChanged,
|
||||
m_editor[LeftSide], &SideDiffEditorWidget::setFolded);
|
||||
}
|
||||
m_editor[LeftSide]->setSelections(results[LeftSide].selections);
|
||||
m_editor[RightSide]->setSelections(results[RightSide].selections);
|
||||
setCurrentDiffFileIndex(m_controller.currentDiffFileIndex());
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include <coreplugin/icore.h>
|
||||
#include <coreplugin/progressmanager/progressmanager.h>
|
||||
|
||||
#include <texteditor/displaysettings.h>
|
||||
#include <texteditor/fontsettings.h>
|
||||
#include <texteditor/textdocument.h>
|
||||
#include <texteditor/textdocumentlayout.h>
|
||||
@@ -37,19 +36,7 @@ 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());
|
||||
setVisualIndentOffset(1);
|
||||
|
||||
connect(TextEditorSettings::instance(), &TextEditorSettings::fontSettingsChanged,
|
||||
this, &UnifiedDiffEditorWidget::setFontSettings);
|
||||
@@ -64,7 +51,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 +91,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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user