diff options
author | Andras Becsi <andras.becsi@theqtcompany.com> | 2015-04-22 11:40:11 +0200 |
---|---|---|
committer | Andras Becsi <andras.becsi@theqtcompany.com> | 2015-04-22 12:09:20 +0000 |
commit | d8d4666db2592b64b7e24aa896ecdac7e8f8bc1a (patch) | |
tree | 5ce3785101bfd4e110e4ab23e0c1d210c1100daa | |
parent | 5bdd41388fab6486061d1bd25be132533d05d711 (diff) |
WebEngineView does not load a url while invisible
Notify the RenderWidgetHost about visibility changes so that we
receive updates with non-empty DelegatedFrameData when a page was
loaded in an invisible WebEngineView and then made visible.
Task-number: QTBUG-42789
Change-Id: I4856efcd9c0ce44b66a228d5a414198df46b95eb
Reviewed-by: Michael BrĂ¼ning <michael.bruning@theqtcompany.com>
6 files changed, 22 insertions, 1 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 0f9286252..572bc340c 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -715,6 +715,16 @@ void RenderWidgetHostViewQt::notifyResize() m_host->WasResized(); } +void RenderWidgetHostViewQt::notifyShown() +{ + WasShown(); +} + +void RenderWidgetHostViewQt::notifyHidden() +{ + WasHidden(); +} + void RenderWidgetHostViewQt::windowBoundsChanged() { m_host->SendScreenRects(); diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index 68330a486..248c52f6e 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -159,6 +159,8 @@ public: // Overridden from RenderWidgetHostViewQtDelegateClient. virtual QSGNode *updatePaintNode(QSGNode *) Q_DECL_OVERRIDE; virtual void notifyResize() Q_DECL_OVERRIDE; + virtual void notifyShown() Q_DECL_OVERRIDE; + virtual void notifyHidden() Q_DECL_OVERRIDE; virtual void windowBoundsChanged() Q_DECL_OVERRIDE; virtual void windowChanged() Q_DECL_OVERRIDE; virtual bool forwardEvent(QEvent *) Q_DECL_OVERRIDE; diff --git a/src/core/render_widget_host_view_qt_delegate.h b/src/core/render_widget_host_view_qt_delegate.h index a12f3055e..da595b91f 100644 --- a/src/core/render_widget_host_view_qt_delegate.h +++ b/src/core/render_widget_host_view_qt_delegate.h @@ -64,6 +64,8 @@ public: virtual ~RenderWidgetHostViewQtDelegateClient() { } virtual QSGNode *updatePaintNode(QSGNode *) = 0; virtual void notifyResize() = 0; + virtual void notifyShown() = 0; + virtual void notifyHidden() = 0; virtual void windowBoundsChanged() = 0; virtual void windowChanged() = 0; virtual bool forwardEvent(QEvent *) = 0; diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp index 0a534ac2c..a3999ccab 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp @@ -120,11 +120,13 @@ void RenderWidgetHostViewQtDelegateQuick::unlockMouse() void RenderWidgetHostViewQtDelegateQuick::show() { setVisible(true); + m_client->notifyShown(); } void RenderWidgetHostViewQtDelegateQuick::hide() { setVisible(false); + m_client->notifyHidden(); } bool RenderWidgetHostViewQtDelegateQuick::isVisible() const diff --git a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp index 39c48ea5c..be240a8ae 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp +++ b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp @@ -79,11 +79,13 @@ QRectF RenderWidgetHostViewQtDelegateQuickWindow::contentsRect() const void RenderWidgetHostViewQtDelegateQuickWindow::show() { QQuickWindow::show(); + m_realDelegate->show(); } void RenderWidgetHostViewQtDelegateQuickWindow::hide() { QQuickWindow::hide(); + m_realDelegate->hide(); } bool RenderWidgetHostViewQtDelegateQuickWindow::isVisible() const diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index 865d0f93f..d615b0f9c 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -136,13 +136,16 @@ void RenderWidgetHostViewQtDelegateWidget::show() { // Check if we're attached to a QWebEngineView, we don't // want to show anything else than popups as top-level. - if (parent() || m_isPopup) + if (parent() || m_isPopup) { QOpenGLWidget::show(); + m_client->notifyShown(); + } } void RenderWidgetHostViewQtDelegateWidget::hide() { QOpenGLWidget::hide(); + m_client->notifyHidden(); } bool RenderWidgetHostViewQtDelegateWidget::isVisible() const |