diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-06-21 12:42:28 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-06-22 09:21:29 +0200 |
commit | 4495d477e0093933d711978da08b5a90afef08ff (patch) | |
tree | 5beabbe12435a779c4afc70bbadd834901df6052 /src/webenginewidgets/api | |
parent | 155dd36a56912fd4ab4b447db38073900e53fc67 (diff) |
Cleanup item delegate logic
Remove two indirect values we can calculate without tracking, and
clean up naming in webenginequick.
Pick-to: 6.4
Change-Id: Ibfab7013f314b428dca707036fe5f027558dff72
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 44 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview_p.h | 2 |
2 files changed, 21 insertions, 25 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 9b8e72ce1..54a1ba0b1 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -142,15 +142,15 @@ public: void Bind(WebContentsAdapterClient *client) override { - BindPage(static_cast<QWebEnginePagePrivate *>(client)->q_func()); + BindPage(static_cast<QWebEnginePagePrivate *>(client)); } - void BindPage(QWebEnginePage *page) + void BindPage(QWebEnginePagePrivate *page) { if (m_pageDestroyedConnection) QObject::disconnect(m_pageDestroyedConnection); QWebEngineViewPrivate::bindPageAndWidget(page, this); - m_pageDestroyedConnection = QObject::connect(page, &QObject::destroyed, this, &WebEngineQuickWidget::UnbindPage); + m_pageDestroyedConnection = QObject::connect(page->q_ptr, &QObject::destroyed, this, &WebEngineQuickWidget::UnbindPage); } void UnbindPage() @@ -723,7 +723,7 @@ void QWebEngineViewPrivate::bindPageAndView(QWebEnginePage *page, QWebEngineView view->d_func()->pageChanged(nullptr, page); if (!widget && page && page->d_func()->item) { widget = new QtWebEngineCore::WebEngineQuickWidget(page->d_func()->item, nullptr); - widget->BindPage(page); + widget->BindPage(page->d_func()); } if (oldWidget != widget) view->d_func()->widgetChanged(oldWidget, widget); @@ -732,39 +732,35 @@ void QWebEngineViewPrivate::bindPageAndView(QWebEnginePage *page, QWebEngineView delete oldPage; } -void QWebEngineViewPrivate::bindPageAndWidget( - QWebEnginePage *page, QtWebEngineCore::WebEngineQuickWidget *widget) +void QWebEngineViewPrivate::bindPageAndWidget(QWebEnginePagePrivate *pagePrivate, + QtWebEngineCore::WebEngineQuickWidget *widget) { - auto oldPage = (widget && widget->m_contentItem) ? widget->m_contentItem->m_page : nullptr; - auto oldWidget = page ? static_cast<QtWebEngineCore::WebEngineQuickWidget *>(page->d_func()->widget) : nullptr; + auto oldAdapterClient = (widget && widget->m_contentItem) ? widget->m_contentItem->m_adapterClient : nullptr; + auto oldWidget = pagePrivate ? static_cast<QtWebEngineCore::WebEngineQuickWidget *>(pagePrivate->widget) : nullptr; + + auto *oldPagePrivate = static_cast<QWebEnginePagePrivate *>(oldAdapterClient); // Change pointers first. - if (widget && oldPage != page) { - if (oldPage && oldPage->d_func()) { - oldPage->d_func()->widget = nullptr; - oldPage->d_func()->item = nullptr; - } - if (widget->m_contentItem) - widget->m_contentItem->m_page = page; + if (oldPagePrivate && oldPagePrivate != pagePrivate) { + oldPagePrivate->widget = nullptr; + oldPagePrivate->item = nullptr; } - if (page && oldWidget != widget) { - if (oldWidget && oldWidget->m_contentItem) - oldWidget->m_contentItem->m_page = nullptr; - page->d_func()->widget = widget; - page->d_func()->item = widget->m_contentItem; + if (pagePrivate && oldWidget != widget) { + pagePrivate->widget = widget; + pagePrivate->item = widget->m_contentItem; } // Then notify. - if (widget && oldPage != page && oldPage && oldPage->d_func()) { - if (auto oldView = oldPage->d_func()->view) + if (oldPagePrivate && oldPagePrivate != pagePrivate) { + if (auto oldView = oldPagePrivate->view) static_cast<QWebEngineViewPrivate *>(oldView)->widgetChanged(widget, nullptr); } - if (page && oldWidget != widget) { - if (auto view = page->d_func()->view) + if (pagePrivate && oldWidget != widget) { + if (auto view = pagePrivate->view) static_cast<QWebEngineViewPrivate *>(view)->widgetChanged(oldWidget, widget); } } diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h index 44eb32203..15644926f 100644 --- a/src/webenginewidgets/api/qwebengineview_p.h +++ b/src/webenginewidgets/api/qwebengineview_p.h @@ -111,7 +111,7 @@ public: QWebEngineViewPrivate(); virtual ~QWebEngineViewPrivate(); static void bindPageAndView(QWebEnginePage *page, QWebEngineView *view); - static void bindPageAndWidget(QWebEnginePage *page, + static void bindPageAndWidget(QWebEnginePagePrivate *pagePrivate, QtWebEngineCore::WebEngineQuickWidget *widget); QIcon webActionIcon(QWebEnginePage::WebAction action); void unhandledKeyEvent(QKeyEvent *event) override; |