diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-05-05 15:52:53 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-05-05 15:52:54 +0200 |
commit | 9f6a3bf96fabeca58599029f9d9d59b7ed852569 (patch) | |
tree | d8a47b67c3b5817d1f5f77c312adbe655b1ca576 /src/quick/items/qquickwindowmodule.cpp | |
parent | e807f9d1d80559b8ff91f1c3cfdd755b3da56a6d (diff) | |
parent | a2eef6b511988b2435c4e39b6b5551e857ce7775 (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I0e495f3d59f2a507aeb73c013e1d8ec0668313c4
Diffstat (limited to 'src/quick/items/qquickwindowmodule.cpp')
-rw-r--r-- | src/quick/items/qquickwindowmodule.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/quick/items/qquickwindowmodule.cpp b/src/quick/items/qquickwindowmodule.cpp index 6100d1466a..7d7cf20210 100644 --- a/src/quick/items/qquickwindowmodule.cpp +++ b/src/quick/items/qquickwindowmodule.cpp @@ -39,6 +39,7 @@ #include "qquickwindowmodule_p.h" #include "qquickwindowattached_p.h" +#include "qquickrendercontrol.h" #include "qquickscreen_p.h" #include "qquickview_p.h" #include "qquickwindowmodule_p_p.h" @@ -68,7 +69,7 @@ void QQuickWindowQmlImpl::setVisible(bool visible) { Q_D(QQuickWindowQmlImpl); d->visible = visible; - if (d->complete && (!transientParent() || transientParent()->isVisible())) + if (d->complete && (!transientParent() || transientParentVisible())) QQuickWindow::setVisible(visible); } @@ -135,7 +136,7 @@ QQuickWindowQmlImpl::QQuickWindowQmlImpl(QQuickWindowQmlImplPrivate &dd, QWindow void QQuickWindowQmlImpl::setWindowVisibility() { Q_D(QQuickWindowQmlImpl); - if (transientParent() && !transientParent()->isVisible()) + if (transientParent() && !transientParentVisible()) return; if (QQuickItem *senderItem = qmlobject_cast<QQuickItem *>(sender())) { @@ -189,6 +190,17 @@ void QQuickWindowQmlImpl::setScreen(QObject *screen) QWindow::setScreen(screenWrapper ? screenWrapper->wrappedScreen() : nullptr); } +bool QQuickWindowQmlImpl::transientParentVisible() +{ + Q_ASSERT(transientParent()); + if (!transientParent()->isVisible()) { + // handle case where transient parent is offscreen window + QWindow *rw = QQuickRenderControl::renderWindowFor(qobject_cast<QQuickWindow*>(transientParent())); + return rw && rw->isVisible(); + } + return true; +} + QT_END_NAMESPACE #include "moc_qquickwindowmodule_p.cpp" |