diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/webview/qquickviewcontroller.cpp | 36 |
2 files changed, 26 insertions, 12 deletions
diff --git a/.qmake.conf b/.qmake.conf index fb8191e..f0511dd 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,4 +2,4 @@ load(qt_build_config) DEFINES += QT_NO_FOREACH -MODULE_VERSION = 5.14.2 +MODULE_VERSION = 5.15.0 diff --git a/src/webview/qquickviewcontroller.cpp b/src/webview/qquickviewcontroller.cpp index 85050d6..11895d6 100644 --- a/src/webview/qquickviewcontroller.cpp +++ b/src/webview/qquickviewcontroller.cpp @@ -233,22 +233,36 @@ void QQuickViewController::geometryChanged(const QRectF &newGeometry, const QRec void QQuickViewController::onWindowChanged(QQuickWindow* window) { QQuickWindow *oldParent = qobject_cast<QQuickWindow *>(m_view->parentView()); - if (oldParent != 0) + if (oldParent) oldParent->disconnect(this); - if (window != 0) { - connect(window, &QQuickWindow::widthChanged, this, &QQuickViewController::scheduleUpdatePolish); - connect(window, &QQuickWindow::heightChanged, this, &QQuickViewController::scheduleUpdatePolish); - connect(window, &QQuickWindow::xChanged, this, &QQuickViewController::scheduleUpdatePolish); - connect(window, &QQuickWindow::yChanged, this, &QQuickViewController::scheduleUpdatePolish); - connect(window, &QQuickWindow::sceneGraphInitialized, this, &QQuickViewController::scheduleUpdatePolish); - connect(window, &QQuickWindow::sceneGraphInvalidated, this, &QQuickViewController::onSceneGraphInvalidated); - connect(window, &QQuickWindow::visibleChanged, this, [this](bool visible) { m_view->setVisible(visible); }); + if (!window) { + m_view->setParentView(nullptr); + return; } - // Check if there's an actual window available. + // Check if there's an actual native window available. QWindow *rw = QQuickRenderControl::renderWindowFor(window); - m_view->setParentView(rw ? rw : window); + + if (rw) { + connect(rw, &QWindow::widthChanged, this, &QQuickViewController::scheduleUpdatePolish); + connect(rw, &QWindow::heightChanged, this, &QQuickViewController::scheduleUpdatePolish); + connect(rw, &QWindow::xChanged, this, &QQuickViewController::scheduleUpdatePolish); + connect(rw, &QWindow::yChanged, this, &QQuickViewController::scheduleUpdatePolish); + connect(rw, &QWindow::visibleChanged, this, [this](bool visible) { m_view->setVisible(visible); }); + connect(window, &QQuickWindow::sceneGraphInitialized, this, &QQuickViewController::scheduleUpdatePolish); + connect(window, &QQuickWindow::sceneGraphInvalidated, this, &QQuickViewController::onSceneGraphInvalidated); + m_view->setParentView(rw); + } else { + connect(window, &QWindow::widthChanged, this, &QQuickViewController::scheduleUpdatePolish); + connect(window, &QWindow::heightChanged, this, &QQuickViewController::scheduleUpdatePolish); + connect(window, &QWindow::xChanged, this, &QQuickViewController::scheduleUpdatePolish); + connect(window, &QWindow::yChanged, this, &QQuickViewController::scheduleUpdatePolish); + connect(window, &QQuickWindow::sceneGraphInitialized, this, &QQuickViewController::scheduleUpdatePolish); + connect(window, &QQuickWindow::sceneGraphInvalidated, this, &QQuickViewController::onSceneGraphInvalidated); + connect(window, &QWindow::visibleChanged, this, [this](bool visible) { m_view->setVisible(visible); }); + m_view->setParentView(window); + } } void QQuickViewController::onVisibleChanged() |