aboutsummaryrefslogtreecommitdiffstats
path: root/src/templates/qquickpopup.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-02-26 15:08:19 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-02-29 18:27:37 +0000
commit758b2b27f30bbec3af2b6dafc94bf20098defdfa (patch)
treec8b33d3f6dbea68991e6dec67b2252ca826c44a4 /src/templates/qquickpopup.cpp
parent8e87c1f9f93841e0c91cf945210fab4ea9e1f3fd (diff)
Add QQuickPopup::window() - C++ only API
Makes the transition for changing QQuickDrawer's base class from QQuickItem to QQuickPopup smoother. Change-Id: Ibedca7190f6bfdee678ec4c07e0db83f2c292b86 Task-number: QTBUG-51007 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src/templates/qquickpopup.cpp')
-rw-r--r--src/templates/qquickpopup.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index 81b4468a..8e5637b5 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -626,19 +626,17 @@ void QQuickPopup::open()
if (d->popupItem->isVisible())
return;
- QQuickWindow *window = nullptr;
- if (d->parentItem)
- window = d->parentItem->window();
- if (!window) {
+ QQuickWindow *quickWindow = window();
+ if (!quickWindow) {
qmlInfo(this) << "cannot find any window to open popup in.";
return;
}
- QQuickApplicationWindow *applicationWindow = qobject_cast<QQuickApplicationWindow*>(window);
+ QQuickApplicationWindow *applicationWindow = qobject_cast<QQuickApplicationWindow*>(quickWindow);
if (!applicationWindow) {
- window->installEventFilter(this);
+ quickWindow->installEventFilter(this);
d->popupItem->setZ(10001); // DefaultWindowDecoration+1
- d->popupItem->setParentItem(window->contentItem());
+ d->popupItem->setParentItem(quickWindow->contentItem());
} else {
d->popupItem->setParentItem(applicationWindow->overlay());
}
@@ -660,12 +658,9 @@ void QQuickPopup::close()
if (!d->popupItem->isVisible())
return;
- if (d->parentItem) {
- QQuickWindow *window = d->parentItem->window();
- if (!qobject_cast<QQuickApplicationWindow *>(window)) {
- window->removeEventFilter(this);
- }
- }
+ QQuickWindow *quickWindow = window();
+ if (quickWindow && !qobject_cast<QQuickApplicationWindow *>(quickWindow))
+ quickWindow->removeEventFilter(this);
d->popupItem->setFocus(false);
emit aboutToHide();
@@ -1156,6 +1151,15 @@ void QQuickPopup::resetBottomPadding()
d->popupItem->resetBottomPadding();
}
+QQuickWindow *QQuickPopup::window() const
+{
+ Q_D(const QQuickPopup);
+ if (!d->parentItem)
+ return nullptr;
+
+ return d->parentItem->window();
+}
+
QQuickItem *QQuickPopup::popupItem() const
{
Q_D(const QQuickPopup);