diff options
Diffstat (limited to 'src')
12 files changed, 21 insertions, 20 deletions
diff --git a/src/core/render_widget_host_view_qt_delegate.h b/src/core/render_widget_host_view_qt_delegate.h index dfbd3b26a..f9306dba9 100644 --- a/src/core/render_widget_host_view_qt_delegate.h +++ b/src/core/render_widget_host_view_qt_delegate.h @@ -65,6 +65,7 @@ QT_END_NAMESPACE namespace QtWebEngineCore { +class WebContentsAdapterClient; class Q_WEBENGINECORE_PRIVATE_EXPORT RenderWidgetHostViewQtDelegate { public: virtual ~RenderWidgetHostViewQtDelegate() { } @@ -85,6 +86,7 @@ public: virtual void inputMethodStateChanged(bool editorVisible, bool passwordInput) = 0; virtual void setInputMethodHints(Qt::InputMethodHints hints) = 0; virtual void setClearColor(const QColor &color) = 0; + virtual void adapterClientChanged(WebContentsAdapterClient *client) = 0; virtual void unhandledWheelEvent(QWheelEvent *) {} }; diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h index 13ed99a91..208d8577d 100644 --- a/src/core/web_contents_adapter_client.h +++ b/src/core/web_contents_adapter_client.h @@ -244,7 +244,6 @@ public: virtual void setToolTip(const QString& toolTipText) = 0; virtual ClientType clientType() = 0; virtual void printRequested() = 0; - virtual void widgetChanged(RenderWidgetHostViewQtDelegate *newWidget) = 0; virtual TouchHandleDrawableClient *createTouchHandle(const QMap<int, QImage> &images) = 0; virtual void showTouchSelectionMenu(TouchSelectionMenuController *menuController, const QRect &bounds, const QSize &handleSize) = 0; virtual void hideTouchSelectionMenu() = 0; diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index a6bd12ca8..d47d7dfab 100644 --- a/src/core/web_contents_delegate_qt.cpp +++ b/src/core/web_contents_delegate_qt.cpp @@ -334,7 +334,8 @@ void WebContentsDelegateQt::RenderViewHostChanged(content::RenderViewHost *, con { if (newHost && newHost->GetWidget() && newHost->GetWidget()->GetView()) { auto rwhv = static_cast<RenderWidgetHostViewQt *>(newHost->GetWidget()->GetView()); - m_viewClient->widgetChanged(rwhv->delegate()); + Q_ASSERT(rwhv->delegate()); + rwhv->delegate()->adapterClientChanged(m_viewClient); } } diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index b65202c86..561c6f85d 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -730,12 +730,6 @@ void QQuickWebEngineViewPrivate::printRequested() }); } -void QQuickWebEngineViewPrivate::widgetChanged(RenderWidgetHostViewQtDelegate *newWidgetBase) -{ - Q_Q(QQuickWebEngineView); - bindViewAndWidget(q, static_cast<RenderWidgetHostViewQtDelegateQuick *>(newWidgetBase)); -} - void QQuickWebEngineViewPrivate::findTextFinished(const QWebEngineFindTextResult &result) { Q_Q(QQuickWebEngineView); diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index 26173ff25..277ec3617 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -170,7 +170,6 @@ public: QtWebEngineCore::ProfileAdapter *profileAdapter() override; QtWebEngineCore::WebContentsAdapter *webContentsAdapter() override; void printRequested() override; - void widgetChanged(QtWebEngineCore::RenderWidgetHostViewQtDelegate *newWidgetBase) override; void findTextFinished(const QWebEngineFindTextResult &result) override; void didCompositorFrameSwap(); 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 9842b3665..7956bec54 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp @@ -386,6 +386,12 @@ void RenderWidgetHostViewQtDelegateQuick::onHide() m_client->forwardEvent(&event); } +void RenderWidgetHostViewQtDelegateQuick::adapterClientChanged(WebContentsAdapterClient *client) +{ + QQuickWebEngineViewPrivate::bindViewAndWidget( + static_cast<QQuickWebEngineViewPrivate *>(client)->q_func(), this); +} + #if QT_CONFIG(accessibility) RenderWidgetHostViewQtDelegateQuickAccessible::RenderWidgetHostViewQtDelegateQuickAccessible(RenderWidgetHostViewQtDelegateQuick *o, QQuickWebEngineView *view) : QAccessibleObject(o) diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.h b/src/webengine/render_widget_host_view_qt_delegate_quick.h index d7ff0ffe9..015b9cdf4 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.h +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h @@ -83,8 +83,8 @@ public: void setInputMethodHints(Qt::InputMethodHints) override { } // The QtQuick view doesn't have a backbuffer of its own and doesn't need this void setClearColor(const QColor &) override { } - void readyToSwap() override; + void adapterClientChanged(WebContentsAdapterClient *client) override; protected: bool event(QEvent *event) override; diff --git a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h index c05e14266..5e8155f1b 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h +++ b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h @@ -72,7 +72,7 @@ public: void inputMethodStateChanged(bool, bool) override {} void setInputMethodHints(Qt::InputMethodHints) override { } void setClearColor(const QColor &) override { } - + void adapterClientChanged(WebContentsAdapterClient *) override { } void setVirtualParent(QQuickItem *virtualParent); private: diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 7c3edcee1..1d2fd9602 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -648,13 +648,6 @@ const QObject *QWebEnginePagePrivate::holdingQObject() const return q; } -void QWebEnginePagePrivate::widgetChanged(RenderWidgetHostViewQtDelegate *newWidgetBase) -{ - Q_Q(QWebEnginePage); - QWebEngineViewPrivate::bindPageAndWidget( - q, static_cast<RenderWidgetHostViewQtDelegateWidget *>(newWidgetBase)); -} - void QWebEnginePagePrivate::findTextFinished(const QWebEngineFindTextResult &result) { Q_Q(QWebEnginePage); @@ -856,7 +849,6 @@ QWebEnginePage::~QWebEnginePage() // d_ptr might be exceptionally null if profile adapter got deleted first setDevToolsPage(nullptr); emit _q_aboutToDelete(); - QWebEngineViewPrivate::bindPageAndWidget(this, nullptr); } } diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index 342461c7a..2ed8fd936 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -156,7 +156,6 @@ public: void hideTouchSelectionMenu() override { } const QObject *holdingQObject() const override; ClientType clientType() override { return QtWebEngineCore::WebContentsAdapterClient::WidgetsClient; } - void widgetChanged(QtWebEngineCore::RenderWidgetHostViewQtDelegate *newWidget) override; void findTextFinished(const QWebEngineFindTextResult &result) override; QtWebEngineCore::ProfileAdapter *profileAdapter() override; 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 319883d2c..a2e5a5e0e 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -465,6 +465,14 @@ void RenderWidgetHostViewQtDelegateWidget::onWindowPosChanged() m_client->visualPropertiesChanged(); } +void RenderWidgetHostViewQtDelegateWidget::adapterClientChanged(WebContentsAdapterClient *client) +{ + QWebEnginePage *page = static_cast<QWebEnginePagePrivate *>(client)->q_func(); + QWebEngineViewPrivate::bindPageAndWidget(page, this); + connect(page, &QWebEnginePage::_q_aboutToDelete, this, + [this]() { QWebEngineViewPrivate::bindPageAndWidget(nullptr, this); }); +} + #if QT_CONFIG(accessibility) RenderWidgetHostViewQtDelegateWidgetAccessible::RenderWidgetHostViewQtDelegateWidgetAccessible(RenderWidgetHostViewQtDelegateWidget *o, QWebEngineView *view) : QAccessibleWidget(o) diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h index ce1110014..bd66eee68 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h @@ -95,6 +95,7 @@ protected: void closeEvent(QCloseEvent *event) override; QVariant inputMethodQuery(Qt::InputMethodQuery query) const override; + void adapterClientChanged(WebContentsAdapterClient *client) override; private slots: void onWindowPosChanged(); |