diff options
Diffstat (limited to 'src/webview/qquickviewcontroller.cpp')
-rw-r--r-- | src/webview/qquickviewcontroller.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/webview/qquickviewcontroller.cpp b/src/webview/qquickviewcontroller.cpp index 35e6017..d2415c1 100644 --- a/src/webview/qquickviewcontroller.cpp +++ b/src/webview/qquickviewcontroller.cpp @@ -184,17 +184,31 @@ void QQuickViewController::setView(QNativeViewController *view) m_view = view; } +void QQuickViewController::scheduleUpdatePolish() +{ + polish(); +} + void QQuickViewController::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { QQuickItem::geometryChanged(newGeometry, oldGeometry); if (newGeometry.isValid()) - m_view->setGeometry(mapRectToScene(clipRect()).toRect()); - else - qWarning() << __FUNCTION__ << "Invalid geometry: " << newGeometry; + polish(); } void QQuickViewController::onWindowChanged(QQuickWindow* window) { + QQuickWindow *oldParent = qobject_cast<QQuickWindow *>(m_view->parentView()); + if (oldParent != 0) + 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); + } + m_view->setParentView(window); } |