aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-22 15:55:03 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-23 09:15:47 +0000
commit5ea88122a7442c49d2262c95a6b0cd32c5b5b541 (patch)
treed3d5cb247177214e9ac646d1e0989a4605c9f7a6
parentdc5b4044fddfa31509610b22f9527435cd1c580c (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.cpp10
-rw-r--r--tests/auto/controls/data/tst_popup.qml8
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()
}