diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2015-01-15 16:05:26 +0100 |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2015-01-16 15:01:31 +0100 |
commit | a704040dc4dd312e6d0552e6d9e6715f988ea39a (patch) | |
tree | b82a73ae61160ea2bb82089c0e63a6e9c6cd17ec /src/quick/items/qquickitemsmodule.cpp | |
parent | 4426aa4055f75621f2b884a4ed5ab224ab0632da (diff) |
Avoid an incorrect warning when dynamically parenting a Window
"Created graphical object was not placed in the graphics scene."
QQuickWindow is the root of a graphics scene and doesn't need to be
inside another one.
It is already suggested in the Window documentation that Window can
be an inline child of a top-level QtObject. This patch fixer the
warning when dynamically creating a Window component.
Change-Id: Ie6d9d37b9e9ffdb61101aaaad6f4b722216ec759
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/quick/items/qquickitemsmodule.cpp')
-rw-r--r-- | src/quick/items/qquickitemsmodule.cpp | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp index eb3e617e7c..e749e7d98a 100644 --- a/src/quick/items/qquickitemsmodule.cpp +++ b/src/quick/items/qquickitemsmodule.cpp @@ -83,8 +83,7 @@ static QQmlPrivate::AutoParentResult qquickitem_autoParent(QObject *obj, QObject { // When setting a parent (especially during dynamic object creation) in QML, // also try to set up the analogous item/window relationship. - QQuickItem *parentItem = qmlobject_cast<QQuickItem *>(parent); - if (parentItem) { + if (QQuickItem *parentItem = qmlobject_cast<QQuickItem *>(parent)) { QQuickItem *item = qmlobject_cast<QQuickItem *>(obj); if (item) { // An Item has another Item @@ -99,26 +98,25 @@ static QQmlPrivate::AutoParentResult qquickitem_autoParent(QObject *obj, QObject } } return QQmlPrivate::IncompatibleObject; - } else { - QQuickWindow *parentWindow = qmlobject_cast<QQuickWindow *>(parent); - if (parentWindow) { - QQuickWindow *win = qmlobject_cast<QQuickWindow *>(obj); - if (win) { - // A Window inside a Window should be transient for it - win->setTransientParent(parentWindow); + } else if (QQuickWindow *parentWindow = qmlobject_cast<QQuickWindow *>(parent)) { + QQuickWindow *win = qmlobject_cast<QQuickWindow *>(obj); + if (win) { + // A Window inside a Window should be transient for it + win->setTransientParent(parentWindow); + return QQmlPrivate::Parented; + } else { + QQuickItem *item = qmlobject_cast<QQuickItem *>(obj); + if (item) { + // The parent of an Item inside a Window is actually the implicit content Item + item->setParentItem(parentWindow->contentItem()); return QQmlPrivate::Parented; - } else { - QQuickItem *item = qmlobject_cast<QQuickItem *>(obj); - if (item) { - // The parent of an Item inside a Window is actually the implicit content Item - item->setParentItem(parentWindow->contentItem()); - return QQmlPrivate::Parented; - } } - return QQmlPrivate::IncompatibleObject; } + return QQmlPrivate::IncompatibleObject; + } else if (qmlobject_cast<QQuickItem *>(obj)) { + return QQmlPrivate::IncompatibleParent; } - return QQmlPrivate::IncompatibleParent; + return QQmlPrivate::IncompatibleObject; } static void qt_quickitems_defineModule(const char *uri, int major, int minor) |