9c17aa1fd8
* Tue Apr 25 2017 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.8.0-10 - Backport upstream fix for blank pages when a link opens in a new tab
47 lines
2.2 KiB
Diff
47 lines
2.2 KiB
Diff
From 8e147ed3be7740092de233a2a7c67ec890069649 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Michael=20Br=C3=BCning?= <michael.bruning@qt.io>
|
|
Date: Mon, 13 Mar 2017 11:13:56 +0100
|
|
Subject: Remove stale parent connection when initializing delegate as a child
|
|
|
|
When clicking on a blank link target, the constructor of the
|
|
RenderWidgetHostViewQtDelegateWidget instance for the newly created
|
|
view is called with the originating QWebEngineView as its parent
|
|
and will connect its removeParentBeforeParentDelete slot to the
|
|
originating view's destroyed signal.
|
|
|
|
This leads to the situation where the delegate's parent will be set to
|
|
null when the originating view is closed, causing the view to display
|
|
only an empty widget with the actual web contents remaining live in
|
|
the background.
|
|
|
|
This patch removes the connection to the old view when initializing
|
|
the delegate as a child of the QWebEnginePagePrivate instance. The
|
|
addition to the layout updates the parent and child relationship
|
|
between the view and the delegate internally.
|
|
|
|
Task-number: QTBUG-58381
|
|
Change-Id: I448380478c2bcfcfbddaee8a35caf46010e57972
|
|
Reviewed-by: Florian Bruhin <qt-project.org@the-compiler.org>
|
|
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
---
|
|
src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
|
|
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 e7ad5b1..14c4d72 100644
|
|
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
|
|
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
|
|
@@ -163,6 +163,9 @@ void RenderWidgetHostViewQtDelegateWidget::initAsChild(WebContentsAdapterClient*
|
|
|
|
QWebEnginePagePrivate *pagePrivate = static_cast<QWebEnginePagePrivate *>(container);
|
|
if (pagePrivate->view) {
|
|
+ if (parentWidget())
|
|
+ disconnect(parentWidget(), &QObject::destroyed,
|
|
+ this, &RenderWidgetHostViewQtDelegateWidget::removeParentBeforeParentDelete);
|
|
pagePrivate->view->layout()->addWidget(this);
|
|
pagePrivate->view->setFocusProxy(this);
|
|
show();
|
|
--
|
|
cgit v1.0-4-g1e03
|
|
|