Merge "Merge remote-tracking branch 'origin/4.12'"

This commit is contained in:
The Qt Project
2020-04-24 11:59:18 +00:00
26 changed files with 4802 additions and 4739 deletions

View File

@@ -229,7 +229,11 @@ function(set_public_includes target includes)
if (NOT IS_ABSOLUTE ${inc_dir}) if (NOT IS_ABSOLUTE ${inc_dir})
set(inc_dir "${CMAKE_CURRENT_SOURCE_DIR}/${inc_dir}") set(inc_dir "${CMAKE_CURRENT_SOURCE_DIR}/${inc_dir}")
endif() endif()
target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${inc_dir}>) file(RELATIVE_PATH include_dir_relative_path ${PROJECT_SOURCE_DIR} ${inc_dir})
target_include_directories(${target} PUBLIC
$<BUILD_INTERFACE:${inc_dir}>
$<INSTALL_INTERFACE:include/${include_dir_relative_path}>
)
endforeach() endforeach()
endfunction() endfunction()

View File

@@ -8,8 +8,6 @@ headerdirs =
sourcedirs = ../src \ sourcedirs = ../src \
../examples/doc \ ../examples/doc \
../../qtcreator/src ../../qtcreator/src
# The image folders also need to added by packaging scripts, so inform your
# local release team about any changes you make.
imagedirs = ../images \ imagedirs = ../images \
../examples/doc/images \ ../examples/doc/images \
../../qtcreator/images \ ../../qtcreator/images \
@@ -23,6 +21,7 @@ imagedirs = ../images \
../../../src/plugins/help/images \ ../../../src/plugins/help/images \
../../../src/plugins/projectexplorer/images \ ../../../src/plugins/projectexplorer/images \
../../../src/plugins/qmldesigner/components/componentcore/images \ ../../../src/plugins/qmldesigner/components/componentcore/images \
../../../src/plugins/qmldesigner/components/edit3d/images \
../../../src/plugins/qmldesigner/components/formeditor \ ../../../src/plugins/qmldesigner/components/formeditor \
../../../src/plugins/qmldesigner/components/navigator \ ../../../src/plugins/qmldesigner/components/navigator \
../../../src/plugins/qmldesigner/components/timelineeditor/images \ ../../../src/plugins/qmldesigner/components/timelineeditor/images \

View File

@@ -67,23 +67,7 @@ source_include_patterns = [
r"^doc/.*$", # include everything under doc/ r"^doc/.*$", # include everything under doc/
r"^.*\.pri$", # .pri files in all directories that are looked into r"^.*\.pri$", # .pri files in all directories that are looked into
r"^.*\.h$", # .h files in all directories that are looked into r"^.*\.h$", # .h files in all directories that are looked into
r"^.*\.hpp$", # .hpp files in all directories that are looked into r"^.*\.hpp$" # .hpp files in all directories that are looked into
# qtdesignstudio docs are build against dev package, so we need to include some image directories
r"^share/qtcreator/qml/qmlpuppet/mockfiles/images/.*$",
r"^share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/images/.*$",
r"^src/libs/qmleditorwidgets/images/.*$",
r"^src/libs/utils/images/.*$",
r"^src/plugins/debugger/images/.*$",
r"^src/plugins/diffeditor/images/.*$",
r"^src/plugins/help/images/.*$",
r"^src/plugins/projectexplorer/images/.*$",
r"^src/plugins/qmldesigner/components/componentcore/images/.*$",
r"^src/plugins/qmldesigner/components/timelineeditor/images/.*$",
r"^src/plugins/qmldesigner/qmlpreviewplugin/images/.*$",
r"^src/plugins/texteditor/images/.*$",
# also some single files
r"^src/plugins/qmldesigner/components/formeditor/.*\.png$",
r"^src/plugins/qmldesigner/components/navigator/.*\.png$"
] ]
build_include_patterns = [ build_include_patterns = [

View File

@@ -51,6 +51,8 @@ Rectangle {
property real __actionIndicatorWidth: StudioTheme.Values.squareComponentWidth property real __actionIndicatorWidth: StudioTheme.Values.squareComponentWidth
property real __actionIndicatorHeight: StudioTheme.Values.height property real __actionIndicatorHeight: StudioTheme.Values.height
property string typeFilter: "QtQuick3D.Material"
color: "transparent" color: "transparent"
border.color: StudioTheme.Values.themeControlOutline border.color: StudioTheme.Values.themeControlOutline
border.width: StudioTheme.Values.border border.width: StudioTheme.Values.border
@@ -69,7 +71,7 @@ Rectangle {
validator: RegExpValidator { regExp: /(^[a-z_]\w*|^[A-Z]\w*\.{1}([a-z_]\w*\.?)+)/ } validator: RegExpValidator { regExp: /(^[a-z_]\w*|^[A-Z]\w*\.{1}([a-z_]\w*\.?)+)/ }
actionIndicatorVisible: false actionIndicatorVisible: false
typeFilter: "QtQuick3D.Material" typeFilter: editableListView.typeFilter
editText: modelData editText: modelData
initialModelData: modelData initialModelData: modelData

View File

@@ -73,8 +73,12 @@ bool ComponentVersion::isValid() const
QString ComponentVersion::toString() const QString ComponentVersion::toString() const
{ {
return QString::fromLatin1("%1.%2").arg(QString::number(_major), QByteArray temp;
QString::number(_minor)); QByteArray result;
result += temp.setNum(_major);
result += '.';
result += temp.setNum(_minor);
return QString::fromLatin1(result);
} }
void ComponentVersion::addToHash(QCryptographicHash &hash) const void ComponentVersion::addToHash(QCryptographicHash &hash) const

View File

@@ -7,6 +7,7 @@ add_qtc_library(QmlJS
parser/qmljsast.cpp parser/qmljsast_p.h parser/qmljsast.cpp parser/qmljsast_p.h
parser/qmljsastfwd_p.h parser/qmljsastfwd_p.h
parser/qmljsastvisitor.cpp parser/qmljsastvisitor_p.h parser/qmljsastvisitor.cpp parser/qmljsastvisitor_p.h
parser/qmljsdiagnosticmessage_p.h
parser/qmljsengine_p.cpp parser/qmljsengine_p.h parser/qmljsengine_p.cpp parser/qmljsengine_p.h
parser/qmljsglobal_p.h parser/qmljsglobal_p.h
parser/qmljsgrammar.cpp parser/qmljsgrammar_p.h parser/qmljsgrammar.cpp parser/qmljsgrammar_p.h

View File

@@ -872,6 +872,7 @@ int Lexer::scanString(ScanStringMode mode)
{ {
QChar quote = (mode == TemplateContinuation) ? QChar(TemplateHead) : QChar(mode); QChar quote = (mode == TemplateContinuation) ? QChar(TemplateHead) : QChar(mode);
bool multilineStringLiteral = false; bool multilineStringLiteral = false;
bool escaped = false;
const QChar *startCode = _codePtr - 1; const QChar *startCode = _codePtr - 1;
// in case we just parsed a \r, we need to reset this flag to get things working // in case we just parsed a \r, we need to reset this flag to get things working
@@ -880,6 +881,12 @@ int Lexer::scanString(ScanStringMode mode)
if (_engine) { if (_engine) {
while (_codePtr <= _endPtr) { while (_codePtr <= _endPtr) {
if (escaped) { // former char started an escape sequence
escaped = false;
_char = *_codePtr++;
++_currentColumnNumber;
continue;
}
if (isLineTerminator()) { if (isLineTerminator()) {
if ((quote == QLatin1Char('`') || qmlMode())) if ((quote == QLatin1Char('`') || qmlMode()))
break; break;
@@ -887,7 +894,10 @@ int Lexer::scanString(ScanStringMode mode)
_errorMessage = QCoreApplication::translate("QmlParser", "Stray newline in string literal"); _errorMessage = QCoreApplication::translate("QmlParser", "Stray newline in string literal");
return T_ERROR; return T_ERROR;
} else if (_char == QLatin1Char('\\')) { } else if (_char == QLatin1Char('\\')) {
if (mode != DoubleQuote && mode != SingleQuote)
break; break;
else // otherwise we need to handle an escape sequence
escaped = true;
} else if (_char == '$' && quote == QLatin1Char('`')) { } else if (_char == '$' && quote == QLatin1Char('`')) {
break; break;
} else if (_char == quote) { } else if (_char == quote) {

View File

@@ -395,6 +395,8 @@ const Value *CppComponentValue::valueForCppName(const QString &typeName) const
return valueOwner()->realValue(); return valueOwner()->realValue();
} else if (typeName == QLatin1String("QFont")) { } else if (typeName == QLatin1String("QFont")) {
return valueOwner()->qmlFontObject(); return valueOwner()->qmlFontObject();
} else if (typeName == QLatin1String("QPalette")) {
return valueOwner()->qmlPaletteObject();
} else if (typeName == QLatin1String("QPoint") } else if (typeName == QLatin1String("QPoint")
|| typeName == QLatin1String("QPointF") || typeName == QLatin1String("QPointF")
|| typeName == QLatin1String("QVector2D")) { || typeName == QLatin1String("QVector2D")) {

View File

@@ -95,6 +95,7 @@ public:
ObjectValue *_mathObject; ObjectValue *_mathObject;
ObjectValue *_qtObject; ObjectValue *_qtObject;
ObjectValue *_qmlFontObject; ObjectValue *_qmlFontObject;
ObjectValue *_qmlPaletteObject;
ObjectValue *_qmlPointObject; ObjectValue *_qmlPointObject;
ObjectValue *_qmlSizeObject; ObjectValue *_qmlSizeObject;
ObjectValue *_qmlRectObject; ObjectValue *_qmlRectObject;
@@ -496,6 +497,28 @@ SharedValueOwner::SharedValueOwner(SharedValueOwnerKind kind)
_qmlFontObject->setMember(QLatin1String("kerning"), booleanValue()); _qmlFontObject->setMember(QLatin1String("kerning"), booleanValue());
_qmlFontObject->setMember(QLatin1String("preferShaping"), booleanValue()); _qmlFontObject->setMember(QLatin1String("preferShaping"), booleanValue());
_qmlPaletteObject = newObject(/* prototype = */ nullptr);
_qmlPaletteObject->setClassName(QLatin1String("palette"));
_qmlPaletteObject->setMember(QLatin1String("alternateBase"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("base"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("brightText"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("button"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("buttonText"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("dark"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("highlight"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("highlightedText"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("light"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("link"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("linkVisited"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("mid"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("midlight"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("shadow"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("text"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("toolTipBase"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("toolTipText"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("window"), colorValue());
_qmlPaletteObject->setMember(QLatin1String("windowText"), colorValue());
_qmlPointObject = newObject(/*prototype =*/ nullptr); _qmlPointObject = newObject(/*prototype =*/ nullptr);
_qmlPointObject->setClassName(QLatin1String("Point")); _qmlPointObject->setClassName(QLatin1String("Point"));
_qmlPointObject->setMember(QLatin1String("x"), numberValue()); _qmlPointObject->setMember(QLatin1String("x"), numberValue());
@@ -896,6 +919,11 @@ const ObjectValue *ValueOwner::qmlFontObject()
return _shared->_qmlFontObject; return _shared->_qmlFontObject;
} }
const ObjectValue *ValueOwner::qmlPaletteObject()
{
return _shared->_qmlPaletteObject;
}
const ObjectValue *ValueOwner::qmlPointObject() const ObjectValue *ValueOwner::qmlPointObject()
{ {
return _shared->_qmlPointObject; return _shared->_qmlPointObject;

View File

@@ -82,6 +82,7 @@ public:
// QML objects // QML objects
const ObjectValue *qmlFontObject(); const ObjectValue *qmlFontObject();
const ObjectValue *qmlPaletteObject();
const ObjectValue *qmlPointObject(); const ObjectValue *qmlPointObject();
const ObjectValue *qmlSizeObject(); const ObjectValue *qmlSizeObject();
const ObjectValue *qmlRectObject(); const ObjectValue *qmlRectObject();

View File

@@ -698,6 +698,7 @@ void ClangTool::startTool(ClangTool::FileSelection fileSelection,
connect(m_runWorker, &ClangToolRunWorker::started, this, &ClangTool::onStarted); connect(m_runWorker, &ClangToolRunWorker::started, this, &ClangTool::onStarted);
connect(m_runWorker, &ClangToolRunWorker::runnerFinished, connect(m_runWorker, &ClangToolRunWorker::runnerFinished,
this, &ClangTool::updateForCurrentState); this, &ClangTool::updateForCurrentState);
connect(m_runControl, &RunControl::destroyed, [this](){ m_runWorker = nullptr; });
// More init and UI update // More init and UI update
m_diagnosticFilterModel->setProject(project); m_diagnosticFilterModel->setProject(project);
@@ -1038,6 +1039,8 @@ void ClangTool::onRunControlStopped()
void ClangTool::update() void ClangTool::update()
{ {
updateForInitialState(); updateForInitialState();
if (!m_runWorker)
return;
updateForCurrentState(); updateForCurrentState();
} }

View File

@@ -33,8 +33,11 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h> #include <coreplugin/variablechooser.h>
#include <projectexplorer/toolchain.h>
#include <projectexplorer/kitinformation.h> #include <projectexplorer/kitinformation.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorersettings.h>
#include <projectexplorer/task.h>
#include <projectexplorer/toolchain.h>
#include <qtsupport/baseqtversion.h> #include <qtsupport/baseqtversion.h>
#include <qtsupport/qtkitinformation.h> #include <qtsupport/qtkitinformation.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
@@ -657,6 +660,21 @@ QVariant CMakeGeneratorKitAspect::defaultValue(const Kit *k) const
return g.matches("NMake Makefiles") return g.matches("NMake Makefiles")
|| g.matches("NMake Makefiles JOM"); || g.matches("NMake Makefiles JOM");
}); });
if (ProjectExplorerPlugin::projectExplorerSettings().useJom) {
it = std::find_if(known.constBegin(),
known.constEnd(),
[](const CMakeTool::Generator &g) {
return g.matches("NMake Makefiles JOM");
});
}
if (it == known.constEnd()) {
it = std::find_if(known.constBegin(),
known.constEnd(),
[](const CMakeTool::Generator &g) {
return g.matches("NMake Makefiles");
});
}
} }
} else { } else {
// Unix-oid OSes: // Unix-oid OSes:
@@ -784,6 +802,16 @@ KitAspectWidget *CMakeGeneratorKitAspect::createConfigWidget(Kit *k) const
return new CMakeGeneratorKitAspectWidget(k, this); return new CMakeGeneratorKitAspectWidget(k, this);
} }
void CMakeGeneratorKitAspect::addToEnvironment(const Kit *k, Utils::Environment &env) const
{
GeneratorInfo info = generatorInfo(k);
if (info.generator == "NMake Makefiles JOM") {
if (env.searchInPath("jom.exe").exists())
return;
env.appendOrSetPath(QCoreApplication::applicationDirPath());
}
}
// -------------------------------------------------------------------- // --------------------------------------------------------------------
// CMakeConfigurationKitAspect: // CMakeConfigurationKitAspect:
// -------------------------------------------------------------------- // --------------------------------------------------------------------

View File

@@ -83,6 +83,7 @@ public:
void upgrade(ProjectExplorer::Kit *k) final; void upgrade(ProjectExplorer::Kit *k) final;
ItemList toUserOutput(const ProjectExplorer::Kit *k) const final; ItemList toUserOutput(const ProjectExplorer::Kit *k) const final;
ProjectExplorer::KitAspectWidget *createConfigWidget(ProjectExplorer::Kit *k) const final; ProjectExplorer::KitAspectWidget *createConfigWidget(ProjectExplorer::Kit *k) const final;
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const final;
private: private:
QVariant defaultValue(const ProjectExplorer::Kit *k) const; QVariant defaultValue(const ProjectExplorer::Kit *k) const;

View File

@@ -502,8 +502,13 @@ void QmakeBuildSystem::startAsyncTimer(QmakeProFile::AsyncUpdateDelay delay)
void QmakeBuildSystem::incrementPendingEvaluateFutures() void QmakeBuildSystem::incrementPendingEvaluateFutures()
{ {
if (m_pendingEvaluateFuturesCount == 0) if (m_pendingEvaluateFuturesCount == 0) {
// The guard actually might already guard the project if this
// here is the re-start of a previously aborted parse due to e.g.
// changing build directories while parsing.
if (!m_guard.guardsProject())
m_guard = guardParsingRun(); m_guard = guardParsingRun();
}
++m_pendingEvaluateFuturesCount; ++m_pendingEvaluateFuturesCount;
m_asyncUpdateFutureInterface.setProgressRange(m_asyncUpdateFutureInterface.progressMinimum(), m_asyncUpdateFutureInterface.setProgressRange(m_asyncUpdateFutureInterface.progressMinimum(),
m_asyncUpdateFutureInterface.progressMaximum() + 1); m_asyncUpdateFutureInterface.progressMaximum() + 1);

View File

@@ -144,6 +144,7 @@ extend_qtc_plugin(QmlDesigner
extend_qtc_plugin(QmlDesigner extend_qtc_plugin(QmlDesigner
SOURCES_PREFIX ../../../share/qtcreator/qml/qmlpuppet/interfaces SOURCES_PREFIX ../../../share/qtcreator/qml/qmlpuppet/interfaces
PUBLIC_INCLUDES ../../../share/qtcreator/qml/qmlpuppet/interfaces
SOURCES SOURCES
nodeinstanceserverinterface.cpp nodeinstanceserverinterface.cpp
commondefines.h commondefines.h
@@ -202,6 +203,7 @@ extend_qtc_plugin(QmlDesigner
extend_qtc_plugin(QmlDesigner extend_qtc_plugin(QmlDesigner
SOURCES_PREFIX components/formeditor SOURCES_PREFIX components/formeditor
PUBLIC_INCLUDES components/formeditor
SOURCES SOURCES
abstractcustomtool.cpp abstractcustomtool.h abstractcustomtool.cpp abstractcustomtool.h
abstractformeditortool.cpp abstractformeditortool.h abstractformeditortool.cpp abstractformeditortool.h
@@ -257,6 +259,7 @@ extend_qtc_plugin(QmlDesigner
extend_qtc_plugin(QmlDesigner extend_qtc_plugin(QmlDesigner
SOURCES_PREFIX components/integration SOURCES_PREFIX components/integration
PUBLIC_INCLUDES components/integration
SOURCES SOURCES
componentaction.cpp componentaction.h componentaction.cpp componentaction.h
componentview.cpp componentview.h componentview.cpp componentview.h
@@ -470,6 +473,7 @@ extend_qtc_plugin(QmlDesigner
extend_qtc_plugin(QmlDesigner extend_qtc_plugin(QmlDesigner
SOURCES_PREFIX designercore SOURCES_PREFIX designercore
PUBLIC_INCLUDES designercore
SOURCES SOURCES
metainfo/itemlibraryinfo.cpp metainfo/itemlibraryinfo.cpp
metainfo/metainfo.cpp metainfo/metainfo.cpp

View File

@@ -238,11 +238,6 @@ QMimeData *ItemLibraryModel::getMimeData(const ItemLibraryEntry &itemLibraryEntr
return mimeData; return mimeData;
} }
QList<ItemLibrarySection *> ItemLibraryModel::sections() const
{
return m_sections;
}
void ItemLibraryModel::clearSections() void ItemLibraryModel::clearSections()
{ {
qDeleteAll(m_sections); qDeleteAll(m_sections);

View File

@@ -58,17 +58,8 @@ public:
QMimeData *getMimeData(const ItemLibraryEntry &itemLibraryEntry); QMimeData *getMimeData(const ItemLibraryEntry &itemLibraryEntry);
QList<ItemLibrarySection*> sections() const;
void clearSections();
static void registerQmlTypes(); static void registerQmlTypes();
int visibleSectionCount() const;
QList<ItemLibrarySection*> visibleSections() const;
ItemLibrarySection *sectionByName(const QString &sectionName);
void setSearchText(const QString &searchText); void setSearchText(const QString &searchText);
void setExpanded(bool, const QString &section); void setExpanded(bool, const QString &section);
@@ -80,13 +71,15 @@ signals:
void searchTextChanged(); void searchTextChanged();
private: // functions private: // functions
ItemLibrarySection *sectionByName(const QString &sectionName);
void updateVisibility(bool *changed); void updateVisibility(bool *changed);
void addRoleNames(); void addRoleNames();
void sortSections(); void sortSections();
void clearSections();
private: // variables private: // variables
QList<ItemLibrarySection*> m_sections; QList<QPointer<ItemLibrarySection>> m_sections;
QHash<int, QByteArray> m_roleNames; QHash<int, QByteArray> m_roleNames;
QString m_searchText; QString m_searchText;

View File

@@ -101,13 +101,15 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
m_itemViewQuickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports"); m_itemViewQuickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports");
m_itemLibraryModel = new ItemLibraryModel(this); m_itemLibraryModel = new ItemLibraryModel(this);
QQmlContext *rootContext = m_itemViewQuickWidget->rootContext(); m_itemViewQuickWidget->rootContext()->setContextProperties(
rootContext->setContextProperty(QStringLiteral("itemLibraryModel"), m_itemLibraryModel.data()); QVector<QQmlContext::PropertyPair>{
rootContext->setContextProperty(QStringLiteral("itemLibraryIconWidth"), m_itemIconSize.width()); {"itemLibraryModel", QVariant::fromValue(m_itemLibraryModel.data())},
rootContext->setContextProperty(QStringLiteral("itemLibraryIconHeight"), m_itemIconSize.height()); {"itemLibraryIconWidth", m_itemIconSize.width()},
rootContext->setContextProperty(QStringLiteral("rootView"), this); {"itemLibraryIconHeight", m_itemIconSize.height()},
{"rootView", QVariant::fromValue(this)},
m_itemViewQuickWidget->rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor()); {"highlightColor", Utils::StyleHelper::notTooBrightHighlightColor()}
}
);
/* create Resources view and its model */ /* create Resources view and its model */
m_resourcesFileSystemModel = new CustomFileSystemModel(this); m_resourcesFileSystemModel = new CustomFileSystemModel(this);

View File

@@ -379,9 +379,12 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q
// anchors // anchors
m_backendAnchorBinding.setup(qmlObjectNode.modelNode()); m_backendAnchorBinding.setup(qmlObjectNode.modelNode());
context()->setContextProperty(QLatin1String("anchorBackend"), &m_backendAnchorBinding); context()->setContextProperties(
QVector<QQmlContext::PropertyPair>{
context()->setContextProperty(QLatin1String("transaction"), m_propertyEditorTransaction.data()); {{"anchorBackend"}, QVariant::fromValue(&m_backendAnchorBinding)},
{{"transaction"}, QVariant::fromValue(m_propertyEditorTransaction.data())}
}
);
qCInfo(propertyEditorBenchmark) << "anchors:" << time.elapsed(); qCInfo(propertyEditorBenchmark) << "anchors:" << time.elapsed();
@@ -457,9 +460,13 @@ void PropertyEditorQmlBackend::initialSetup(const TypeName &typeName, const QUrl
QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged); QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged);
m_backendValuesPropertyMap.insert(QLatin1String("id"), QVariant::fromValue(valueObject)); m_backendValuesPropertyMap.insert(QLatin1String("id"), QVariant::fromValue(valueObject));
context()->setContextProperty(QLatin1String("anchorBackend"), &m_backendAnchorBinding); context()->setContextProperties(
context()->setContextProperty(QLatin1String("modelNodeBackend"), &m_backendModelNode); QVector<QQmlContext::PropertyPair>{
context()->setContextProperty(QLatin1String("transaction"), m_propertyEditorTransaction.data()); {{"anchorBackend"}, QVariant::fromValue(&m_backendAnchorBinding)},
{{"modelNodeBackend"}, QVariant::fromValue(&m_backendModelNode)},
{{"transaction"}, QVariant::fromValue(m_propertyEditorTransaction.data())}
}
);
contextObject()->setSpecificsUrl(qmlSpecificsFile); contextObject()->setSpecificsUrl(qmlSpecificsFile);

View File

@@ -102,9 +102,12 @@ StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, State
setResizeMode(QQuickWidget::SizeRootObjectToView); setResizeMode(QQuickWidget::SizeRootObjectToView);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
rootContext()->setContextProperty(QStringLiteral("statesEditorModel"), statesEditorModel); rootContext()->setContextProperties(
QVector<QQmlContext::PropertyPair>{
rootContext()->setContextProperty(QLatin1String("canAddNewStates"), true); {{"statesEditorModel"}, QVariant::fromValue(statesEditorModel)},
{{"canAddNewStates"}, true}
}
);
Theme::setupTheme(engine()); Theme::setupTheme(engine());

View File

@@ -650,7 +650,7 @@ PropertyName NodeMetaInfoPrivate::defaultPropertyName() const
static inline TypeName stringIdentifier( const TypeName &type, int maj, int min) static inline TypeName stringIdentifier( const TypeName &type, int maj, int min)
{ {
return type + QString::number(maj).toLatin1() + '_' + QString::number(min).toLatin1(); return type + QByteArray::number(maj) + '_' + QByteArray::number(min);
} }
NodeMetaInfoPrivate::Pointer NodeMetaInfoPrivate::create(Model *model, const TypeName &type, int major, int minor) NodeMetaInfoPrivate::Pointer NodeMetaInfoPrivate::create(Model *model, const TypeName &type, int major, int minor)

View File

@@ -381,11 +381,19 @@ void QmlObjectNode::destroy()
timeline.destroyKeyframesForTarget(subNode); timeline.destroyKeyframesForTarget(subNode);
} }
if (QmlFlowActionAreaNode::isValidQmlFlowActionAreaNode(modelNode())) bool wasFlowEditorTarget = false;
QmlFlowActionAreaNode(modelNode()).destroyTarget(); if (QmlFlowTargetNode::isFlowEditorTarget(modelNode())) {
QmlFlowTargetNode(modelNode()).destroyTargets();
wasFlowEditorTarget = true;
}
removeStateOperationsForChildren(modelNode()); removeStateOperationsForChildren(modelNode());
QmlFlowViewNode root(view()->rootModelNode());
modelNode().destroy(); modelNode().destroy();
if (wasFlowEditorTarget && root.isValid())
root.removeDanglingTransitions();
} }
void QmlObjectNode::ensureAliasExport() void QmlObjectNode::ensureAliasExport()

View File

@@ -84,6 +84,7 @@ void DesignerSettings::fromSettings(QSettings *settings)
); );
restoreValue(settings, DesignerSettingsKey::SIMPLE_COLOR_PALETTE_CONTENT, QStringList()); restoreValue(settings, DesignerSettingsKey::SIMPLE_COLOR_PALETTE_CONTENT, QStringList());
restoreValue(settings, DesignerSettingsKey::ALWAYS_DESIGN_MODE, true); restoreValue(settings, DesignerSettingsKey::ALWAYS_DESIGN_MODE, true);
restoreValue(settings, DesignerSettingsKey::DISABLE_ITEM_LIBRARY_UPDATE_TIMER, true);
settings->endGroup(); settings->endGroup();
settings->endGroup(); settings->endGroup();

View File

@@ -791,7 +791,7 @@ void QmlJSEditorWidget::findLinkAt(const QTextCursor &cursor,
const QString relative = QString::fromLatin1("%1/%2").arg( const QString relative = QString::fromLatin1("%1/%2").arg(
semanticInfo.document->path(), semanticInfo.document->path(),
text); text);
if (semanticInfo.snapshot.document(relative)) { if (QFileInfo::exists(relative)) {
link.targetFileName = relative; link.targetFileName = relative;
processLinkCallback(link); processLinkCallback(link);
return; return;

View File

@@ -107,6 +107,7 @@
#include <QPropertyAnimation> #include <QPropertyAnimation>
#include <QDrag> #include <QDrag>
#include <QSequentialAnimationGroup> #include <QSequentialAnimationGroup>
#include <QScreen>
#include <QScrollBar> #include <QScrollBar>
#include <QShortcut> #include <QShortcut>
#include <QStyle> #include <QStyle>
@@ -1201,7 +1202,11 @@ void TextEditorWidgetPrivate::print(QPrinter *printer)
QAbstractTextDocumentLayout *layout = doc->documentLayout(); QAbstractTextDocumentLayout *layout = doc->documentLayout();
layout->setPaintDevice(p.device()); layout->setPaintDevice(p.device());
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
int dpiy = p.device()->logicalDpiY(); int dpiy = p.device()->logicalDpiY();
#else
int dpiy = qRound(QGuiApplication::primaryScreen()->logicalDotsPerInchY());
#endif
int margin = int((2/2.54)*dpiy); // 2 cm margins int margin = int((2/2.54)*dpiy); // 2 cm margins
QTextFrameFormat fmt = doc->rootFrame()->frameFormat(); QTextFrameFormat fmt = doc->rootFrame()->frameFormat();