diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 0f9286252fdc4572a2703a2c550a4f04e5f130a6..572bc340ce67c2de66f7651ab0c76f73b99f0ed2 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 68330a486468452e00989cc4231f495cb1046188..248c52f6e71603332ff83d51df94e1b737c17c36 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 a12f3055e1ada048faab496d11ff327557763a9a..da595b91f1192d4e26b1b0b0985d2d6447442a94 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 0a534ac2c44316fe40ed4cf5b9a11e1eb9ddcbb0..a3999ccabd21d5071b84a822771101efdfb5c95e 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 39c48ea5cf464f1d53f381be2fa2a08d4029b5e3..be240a8aeeaaf2974fd4a37187838fd72dcb6972 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 865d0f93ff477b510badd0e61a115f4a3ac3dd26..d615b0f9cff5e0d8c54698a71ec4a1edd33ba336 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