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:
Tim Jenssen
2022-10-25 19:01:00 +02:00
186 changed files with 2027 additions and 1207 deletions

View File

@@ -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());

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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());

View File

@@ -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);

View File

@@ -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);