diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-26 15:08:19 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-29 18:27:37 +0000 |
commit | 758b2b27f30bbec3af2b6dafc94bf20098defdfa (patch) | |
tree | c8b33d3f6dbea68991e6dec67b2252ca826c44a4 /src/templates/qquickpopup.cpp | |
parent | 8e87c1f9f93841e0c91cf945210fab4ea9e1f3fd (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.cpp | 30 |
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); |