aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-21 15:33:11 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-21 19:54:25 +0000
commit40aa7c39671400d96cf5f87fa737264912585ca0 (patch)
treedf2c4f2f7860af2966809c562d3320e7b4151248 /src
parent9d590d6313ba579a2c2112e4b314cacd05d09a50 (diff)
Popup: make ApplicationWindow attached properties available
Change-Id: Idde9fb49c222abc1ceabd15256695fd1961a9f76 Task-number: QTBUG-51991 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/templates/qquickapplicationwindow.cpp6
-rw-r--r--src/templates/qquickpopup.cpp6
-rw-r--r--src/templates/qquickpopup_p.h1
3 files changed, 11 insertions, 2 deletions
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp
index 0281e3c3..1cc21d74 100644
--- a/src/templates/qquickapplicationwindow.cpp
+++ b/src/templates/qquickapplicationwindow.cpp
@@ -617,10 +617,12 @@ QQuickApplicationWindowAttached::QQuickApplicationWindowAttached(QObject *parent
: QObject(*(new QQuickApplicationWindowAttachedPrivate), parent)
{
Q_D(QQuickApplicationWindowAttached);
- QQuickItem *item = qobject_cast<QQuickItem *>(parent);
- if (item) {
+ if (QQuickItem *item = qobject_cast<QQuickItem *>(parent)) {
d->windowChange(item->window());
QObjectPrivate::connect(item, &QQuickItem::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange);
+ } else if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent)) {
+ d->windowChange(popup->window());
+ QObjectPrivate::connect(popup, &QQuickPopup::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange);
}
}
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index ab36e4cc..f0866bdd 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -1285,6 +1285,8 @@ void QQuickPopup::setParentItem(QQuickItem *parent)
if (d->parentItem == parent)
return;
+ QQuickWindow *oldWindow = window();
+
d->parentItem = parent;
if (d->positioner.parentItem())
d->positioner.setParentItem(parent);
@@ -1295,6 +1297,10 @@ void QQuickPopup::setParentItem(QQuickItem *parent)
p->updateLocale(window->locale(), false); // explicit=false
}
emit parentChanged();
+
+ QQuickWindow *newWindow = window();
+ if (oldWindow != newWindow)
+ emit windowChanged(newWindow);
}
/*!
diff --git a/src/templates/qquickpopup_p.h b/src/templates/qquickpopup_p.h
index 33f44210..22f9e8a9 100644
--- a/src/templates/qquickpopup_p.h
+++ b/src/templates/qquickpopup_p.h
@@ -312,6 +312,7 @@ Q_SIGNALS:
void closePolicyChanged();
void enterChanged();
void exitChanged();
+ void windowChanged(QQuickWindow *window);
void aboutToShow();
void aboutToHide();