From 8d868d8bbb174256e4501f8ad6f40ddc24150f3b Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Thu, 23 Apr 2020 01:33:42 +0200 Subject: [PATCH] QmlDesigner: use setContextProperties should be faster Change-Id: I3f491237746856c00f13947dfa9e8464a2bd5c25 Reviewed-by: Thomas Hartmann --- .../itemlibrary/itemlibrarywidget.cpp | 16 +++++++++------- .../propertyeditorqmlbackend.cpp | 19 +++++++++++++------ .../stateseditor/stateseditorwidget.cpp | 9 ++++++--- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 378f1e897ae..13230544ae5 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -101,13 +101,15 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : m_itemViewQuickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports"); m_itemLibraryModel = new ItemLibraryModel(this); - QQmlContext *rootContext = m_itemViewQuickWidget->rootContext(); - rootContext->setContextProperty(QStringLiteral("itemLibraryModel"), m_itemLibraryModel.data()); - rootContext->setContextProperty(QStringLiteral("itemLibraryIconWidth"), m_itemIconSize.width()); - rootContext->setContextProperty(QStringLiteral("itemLibraryIconHeight"), m_itemIconSize.height()); - rootContext->setContextProperty(QStringLiteral("rootView"), this); - - m_itemViewQuickWidget->rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor()); + m_itemViewQuickWidget->rootContext()->setContextProperties( + QVector{ + {"itemLibraryModel", QVariant::fromValue(m_itemLibraryModel.data())}, + {"itemLibraryIconWidth", m_itemIconSize.width()}, + {"itemLibraryIconHeight", m_itemIconSize.height()}, + {"rootView", QVariant::fromValue(this)}, + {"highlightColor", Utils::StyleHelper::notTooBrightHighlightColor()} + } + ); /* create Resources view and its model */ m_resourcesFileSystemModel = new CustomFileSystemModel(this); diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp index d9a685c7032..42ad8857cf0 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp @@ -379,9 +379,12 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q // anchors m_backendAnchorBinding.setup(qmlObjectNode.modelNode()); - context()->setContextProperty(QLatin1String("anchorBackend"), &m_backendAnchorBinding); - - context()->setContextProperty(QLatin1String("transaction"), m_propertyEditorTransaction.data()); + context()->setContextProperties( + QVector{ + {"anchorBackend", QVariant::fromValue(&m_backendAnchorBinding)}, + {"transaction", QVariant::fromValue(m_propertyEditorTransaction.data())} + } + ); 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); m_backendValuesPropertyMap.insert(QLatin1String("id"), QVariant::fromValue(valueObject)); - context()->setContextProperty(QLatin1String("anchorBackend"), &m_backendAnchorBinding); - context()->setContextProperty(QLatin1String("modelNodeBackend"), &m_backendModelNode); - context()->setContextProperty(QLatin1String("transaction"), m_propertyEditorTransaction.data()); + context()->setContextProperties( + QVector{ + {"anchorBackend", QVariant::fromValue(&m_backendAnchorBinding)}, + {"modelNodeBackend", QVariant::fromValue(&m_backendModelNode)}, + {"transaction", QVariant::fromValue(m_propertyEditorTransaction.data())} + } + ); contextObject()->setSpecificsUrl(qmlSpecificsFile); diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp index dafe5f3ff26..b3098b93604 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp @@ -102,9 +102,12 @@ StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, State setResizeMode(QQuickWidget::SizeRootObjectToView); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - rootContext()->setContextProperty(QStringLiteral("statesEditorModel"), statesEditorModel); - - rootContext()->setContextProperty(QLatin1String("canAddNewStates"), true); + rootContext()->setContextProperties( + QVector{ + {"statesEditorModel", QVariant::fromValue(statesEditorModel)}, + {"canAddNewStates", true} + } + ); Theme::setupTheme(engine());