summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@theqtcompany.com>2015-04-22 11:40:11 +0200
committerAndras Becsi <andras.becsi@theqtcompany.com>2015-04-22 12:09:20 +0000
commitd8d4666db2592b64b7e24aa896ecdac7e8f8bc1a (patch)
tree5ce3785101bfd4e110e4ab23e0c1d210c1100daa
parent5bdd41388fab6486061d1bd25be132533d05d711 (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>
-rw-r--r--src/core/render_widget_host_view_qt.cpp10
-rw-r--r--src/core/render_widget_host_view_qt.h2
-rw-r--r--src/core/render_widget_host_view_qt_delegate.h2
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quick.cpp2
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp2
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp5
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