aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates2/qquicktooltip.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquicktooltip.cpp b/src/quicktemplates2/qquicktooltip.cpp
index cc0b6350..65e81fda 100644
--- a/src/quicktemplates2/qquicktooltip.cpp
+++ b/src/quicktemplates2/qquicktooltip.cpp
@@ -325,7 +325,13 @@ public:
QQuickToolTip *QQuickToolTipAttachedPrivate::instance(bool create) const
{
- static QPointer<QQuickToolTip> tip;
+ QQmlEngine *engine = qmlEngine(parent);
+ if (!engine)
+ return nullptr;
+
+ static const char *name = "_q_QQuickToolTip";
+
+ QQuickToolTip *tip = engine->property(name).value<QQuickToolTip *>();
if (!tip && create) {
// TODO: a cleaner way to create the instance? QQml(Meta)Type?
QQmlContext *context = qmlContext(parent);
@@ -334,9 +340,14 @@ QQuickToolTip *QQuickToolTipAttachedPrivate::instance(bool create) const
component.setData("import QtQuick.Controls 2.0; ToolTip { }", QUrl());
QObject *object = component.create(context);
+ if (object)
+ object->setParent(engine);
+
tip = qobject_cast<QQuickToolTip *>(object);
if (!tip)
delete object;
+ else
+ engine->setProperty(name, QVariant::fromValue(object));
}
}
return tip;