diff options
Diffstat (limited to 'src/quick/items/qquickwindowmodule.cpp')
-rw-r--r-- | src/quick/items/qquickwindowmodule.cpp | 20 |
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. |