From 53c780f15c2d170514f74d949a8165033275bddd Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 19 Aug 2016 17:42:15 +0200 Subject: QQuickToolTip: fix the creation context of the shared tooltip Don't create the shared tooltip in the parent item's context, because that may be destroyed and invalidate all bindings in ToolTip.qml. The QML engine is the effective parent of the shared tooltip, so use the engine's root context for creation as well. We do not need to pass any specific context to QQmlComponent::create(), because it will pick the root context by default. Change-Id: I624b53fa9ba02123398e76b5eccf1a8091826b37 Task-number: QTBUG-55347 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquicktooltip.cpp | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'src/quicktemplates2/qquicktooltip.cpp') diff --git a/src/quicktemplates2/qquicktooltip.cpp b/src/quicktemplates2/qquicktooltip.cpp index d47589ba..e08078f6 100644 --- a/src/quicktemplates2/qquicktooltip.cpp +++ b/src/quicktemplates2/qquicktooltip.cpp @@ -334,21 +334,18 @@ QQuickToolTip *QQuickToolTipAttachedPrivate::instance(bool create) const QQuickToolTip *tip = engine->property(name).value(); if (!tip && create) { // TODO: a cleaner way to create the instance? QQml(Meta)Type? - QQmlContext *context = qmlContext(parent); - if (context) { - QQmlComponent component(context->engine()); - component.setData("import QtQuick.Controls 2.0; ToolTip { }", QUrl()); - - QObject *object = component.create(context); - if (object) - object->setParent(engine); - - tip = qobject_cast(object); - if (!tip) - delete object; - else - engine->setProperty(name, QVariant::fromValue(object)); - } + QQmlComponent component(engine); + component.setData("import QtQuick.Controls 2.0; ToolTip { }", QUrl()); + + QObject *object = component.create(); + if (object) + object->setParent(engine); + + tip = qobject_cast(object); + if (!tip) + delete object; + else + engine->setProperty(name, QVariant::fromValue(object)); } return tip; } -- cgit v1.2.3