diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2014-01-08 14:37:40 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-17 14:58:55 +0100 |
commit | 13416b2db167dc1849e4af94391d3c6ae602ec76 (patch) | |
tree | b0adcf4565663bc43a262ec2e535b6f3c4505a18 /src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | |
parent | db2c0781218b7dfa03f7bc39b1e2115dbf4a0fb0 (diff) |
Fix QWebEngineView to page reattachment.
This fixes the crash in tst_QWebEngineView::reusePage.
Also add a test to check the case where show() would react incorrectly.
Change-Id: I40247c7c225d74b26675b6a7fa5ff1f06d3bb3e6
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Diffstat (limited to 'src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp')
-rw-r--r-- | src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
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 0d84a0f46..c7b831853 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -64,9 +64,11 @@ RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(Rende void RenderWidgetHostViewQtDelegateWidget::initAsChild(WebContentsAdapterClient* container) { QWebEnginePagePrivate *pagePrivate = static_cast<QWebEnginePagePrivate *>(container); - // FIXME: What is going to trigger this if the page is attached later to the view? - if (pagePrivate->view) + if (pagePrivate->view) { pagePrivate->view->layout()->addWidget(this); + QWidget::show(); + } else + setParent(0); } void RenderWidgetHostViewQtDelegateWidget::initAsPopup(const QRect& rect) @@ -94,7 +96,9 @@ bool RenderWidgetHostViewQtDelegateWidget::hasKeyboardFocus() void RenderWidgetHostViewQtDelegateWidget::show() { - QWidget::show(); + // Check if we're attached to a QWebEngineView, we don't want to show as top-level. + if (parent()) + QWidget::show(); } void RenderWidgetHostViewQtDelegateWidget::hide() |