aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickwindowmodule.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquickwindowmodule.cpp')
-rw-r--r--src/quick/items/qquickwindowmodule.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/quick/items/qquickwindowmodule.cpp b/src/quick/items/qquickwindowmodule.cpp
index f6c32dcac3..3bd62d21db 100644
--- a/src/quick/items/qquickwindowmodule.cpp
+++ b/src/quick/items/qquickwindowmodule.cpp
@@ -73,7 +73,7 @@ public:
void setVisible(bool visible) {
if (!m_complete)
m_visible = visible;
- else
+ else if (!transientParent() || transientParent()->isVisible())
QQuickWindow::setVisible(visible);
}
@@ -101,6 +101,24 @@ protected:
void componentComplete() {
m_complete = true;
+ if (transientParent() && !transientParent()->isVisible()) {
+ connect(transientParent(), &QQuickWindow::visibleChanged, this,
+ &QQuickWindowQmlImpl::setWindowVisibility, Qt::QueuedConnection);
+ } else {
+ setWindowVisibility();
+ }
+ }
+
+private Q_SLOTS:
+ void setWindowVisibility()
+ {
+ if (transientParent() && !transientParent()->isVisible())
+ return;
+
+ if (sender()) {
+ disconnect(transientParent(), &QWindow::visibleChanged, this,
+ &QQuickWindowQmlImpl::setWindowVisibility);
+ }
// We have deferred window creation until we have the full picture of what
// the user wanted in terms of window state, geometry, visibility, etc.