diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-22 15:55:03 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-23 09:15:47 +0000 |
commit | 5ea88122a7442c49d2262c95a6b0cd32c5b5b541 (patch) | |
tree | d3d5cb247177214e9ac646d1e0989a4605c9f7a6 | |
parent | dc5b4044fddfa31509610b22f9527435cd1c580c (diff) |
Support ApplicationWindow attached property for items inside Popup
Change-Id: Ie8fb9fcf415670102d9364f85120bc315a8a067e
Task-number: QTBUG-51991
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
-rw-r--r-- | src/templates/qquickapplicationwindow.cpp | 10 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_popup.qml | 8 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp index 1cc21d74..0e85fc2b 100644 --- a/src/templates/qquickapplicationwindow.cpp +++ b/src/templates/qquickapplicationwindow.cpp @@ -620,6 +620,16 @@ QQuickApplicationWindowAttached::QQuickApplicationWindowAttached(QObject *parent if (QQuickItem *item = qobject_cast<QQuickItem *>(parent)) { d->windowChange(item->window()); QObjectPrivate::connect(item, &QQuickItem::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange); + if (!d->window) { + QQuickItem *p = item; + while (p) { + if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(p->parent())) { + d->windowChange(popup->window()); + QObjectPrivate::connect(popup, &QQuickPopup::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange); + } + p = p->parentItem(); + } + } } else if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent)) { d->windowChange(popup->window()); QObjectPrivate::connect(popup, &QQuickPopup::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange); diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml index d9bef42f..05340d18 100644 --- a/tests/auto/controls/data/tst_popup.qml +++ b/tests/auto/controls/data/tst_popup.qml @@ -907,13 +907,19 @@ TestCase { } function test_attached_applicationwindow() { - var control = popupTemplate.createObject(applicationWindow.contentItem) + var control = popupControl.createObject(applicationWindow.contentItem) verify(control) + var child = rect.createObject(control.contentItem) + compare(control.ApplicationWindow.window, applicationWindow) + compare(control.contentItem.ApplicationWindow.window, applicationWindow) + compare(child.ApplicationWindow.window, applicationWindow) control.parent = null compare(control.ApplicationWindow.window, null) + compare(control.contentItem.ApplicationWindow.window, null) + compare(child.ApplicationWindow.window, null) control.destroy() } |