From 0417bf61d53a61879702aa6e5bc64d1da557db27 Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Mon, 6 Apr 2020 12:21:45 +0100 Subject: [configview] Simplify code / workaround Qt5.15 crash Summary: QQmlComponent::beginCreate and completeCreate are useful if you need to set properties on the object explicitly. We're not doing that here, we can just call create. Test Plan: On Qt5.15 Right click a panel choose edit Reviewers: #plasma, apol Reviewed By: apol Subscribers: apol, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D28599 --- src/plasmaquick/configview.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/plasmaquick/configview.cpp b/src/plasmaquick/configview.cpp index ff43753..c5e2228 100644 --- a/src/plasmaquick/configview.cpp +++ b/src/plasmaquick/configview.cpp @@ -134,9 +134,13 @@ void ConfigViewPrivate::init() q->setResizeMode(QQuickView::SizeViewToRootObject); + auto plasmoid = applet.data()->property("_plasma_graphicObject").value(); + q->engine()->rootContext()->setContextProperties({QQmlContext::PropertyPair{QStringLiteral("plasmoid"), QVariant::fromValue(plasmoid)}, + QQmlContext::PropertyPair{QStringLiteral("configDialog"), QVariant::fromValue(q)}}); + //config model local of the applet QQmlComponent *component = new QQmlComponent(q->engine(), applet.data()->kPackage().fileUrl("configmodel"), q); - QObject *object = component->beginCreate(q->engine()->rootContext()); + QObject *object = component->create(q->engine()->rootContext()); configModel = qobject_cast(object); if (configModel) { @@ -172,9 +176,6 @@ void ConfigViewPrivate::init() } } - q->engine()->rootContext()->setContextProperty(QStringLiteral("plasmoid"), applet.data()->property("_plasma_graphicObject").value()); - q->engine()->rootContext()->setContextProperty(QStringLiteral("configDialog"), q); - component->completeCreate(); delete component; } -- cgit v1.1