summaryrefslogtreecommitdiff
path: root/src/webenginequick
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-06-21 12:42:28 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-06-22 09:21:29 +0200
commit4495d477e0093933d711978da08b5a90afef08ff (patch)
tree5beabbe12435a779c4afc70bbadd834901df6052 /src/webenginequick
parent155dd36a56912fd4ab4b447db38073900e53fc67 (diff)
downloadqtwebengine-4495d477e0093933d711978da08b5a90afef08ff.tar.gz
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/webenginequick')
-rw-r--r--src/webenginequick/api/qquickwebengineview.cpp74
-rw-r--r--src/webenginequick/api/qquickwebengineview_p_p.h8
-rw-r--r--src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp6
3 files changed, 42 insertions, 46 deletions
diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp
index 015f916b3..5c411fd1e 100644
--- a/src/webenginequick/api/qquickwebengineview.cpp
+++ b/src/webenginequick/api/qquickwebengineview.cpp
@@ -164,13 +164,13 @@ public:
void Bind(WebContentsAdapterClient *client) override
{
- QQuickWebEngineViewPrivate::bindViewAndWidget(
- static_cast<QQuickWebEngineViewPrivate *>(client)->q_func(), m_contentItem);
+ QQuickWebEngineViewPrivate::bindViewAndDelegateItem(
+ static_cast<QQuickWebEngineViewPrivate *>(client), m_contentItem);
}
void Unbind() override
{
- QQuickWebEngineViewPrivate::bindViewAndWidget(nullptr, m_contentItem);
+ QQuickWebEngineViewPrivate::bindViewAndDelegateItem(nullptr, m_contentItem);
}
void Destroy() override
@@ -234,9 +234,7 @@ QQuickWebEngineViewPrivate::~QQuickWebEngineViewPrivate()
m_profile->d_ptr->removeWebContentsAdapterClient(this);
if (m_faviconProvider)
m_faviconProvider->detach(q_ptr);
- // q_ptr->d_ptr might be null due to destroy()
- if (q_ptr->d_ptr)
- bindViewAndWidget(q_ptr, nullptr);
+ bindViewAndDelegateItem(this, nullptr);
}
void QQuickWebEngineViewPrivate::initializeProfile()
@@ -269,7 +267,7 @@ void QQuickWebEngineViewPrivate::releaseProfile()
// The profile for this web contents is about to be
// garbage collected, delete WebContents first and
// let the QQuickWebEngineView be collected later by gc.
- bindViewAndWidget(q_ptr, nullptr);
+ bindViewAndDelegateItem(this, nullptr);
q_ptr->d_ptr.reset();
}
@@ -909,59 +907,57 @@ void QQuickWebEngineViewPrivate::setFullScreenMode(bool fullscreen)
}
}
-void QQuickWebEngineViewPrivate::bindViewAndWidget(QQuickWebEngineView *view,
- RenderWidgetHostViewQtDelegateItem *widget)
+// static
+void QQuickWebEngineViewPrivate::bindViewAndDelegateItem(QQuickWebEngineViewPrivate *viewPrivate,
+ RenderWidgetHostViewQtDelegateItem *delegateItem)
{
- auto oldWidget = view ? view->d_func()->widget : nullptr;
- auto oldView = widget ? widget->m_view : nullptr;
+ auto oldDelegateItem = viewPrivate ? viewPrivate->delegateItem : nullptr;
+ auto oldAdapterClient = delegateItem ? delegateItem->m_adapterClient : nullptr;
+
+ auto *oldViewPrivate = static_cast<QQuickWebEngineViewPrivate *>(oldAdapterClient);
// Change pointers first.
- if (widget && oldView != view) {
- if (oldView)
- oldView->d_func()->widget = nullptr;
- widget->m_view = view;
- }
+ if (oldViewPrivate && oldViewPrivate != viewPrivate)
+ oldViewPrivate->delegateItem = nullptr;
- if (view && oldWidget != widget) {
- if (oldWidget)
- oldWidget->m_view = nullptr;
- view->d_func()->widget = widget;
- }
+ if (viewPrivate && oldDelegateItem != delegateItem)
+ viewPrivate->delegateItem = delegateItem;
// Then notify.
- if (widget && oldView != view && oldView)
- oldView->d_func()->widgetChanged(widget, nullptr);
+ if (oldViewPrivate && oldViewPrivate != viewPrivate)
+ oldViewPrivate->delegateItemChanged(delegateItem, nullptr);
- if (view && oldWidget != widget)
- view->d_func()->widgetChanged(oldWidget, widget);
+ if (viewPrivate && oldDelegateItem != delegateItem)
+ viewPrivate->delegateItemChanged(oldDelegateItem, delegateItem);
}
-void QQuickWebEngineViewPrivate::widgetChanged(QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *oldWidget,
- QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *newWidget)
+void QQuickWebEngineViewPrivate::delegateItemChanged(QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *oldDelegateItem,
+ QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *newDelegateItem)
{
Q_Q(QQuickWebEngineView);
- if (oldWidget) {
- oldWidget->setParentItem(nullptr);
+ if (oldDelegateItem) {
+ oldDelegateItem->setParentItem(nullptr);
#if QT_CONFIG(accessibility)
- if (!QtWebEngineCore::closingDown())
- QAccessible::deleteAccessibleInterface(
- QAccessible::uniqueId(QAccessible::queryAccessibleInterface(oldWidget)));
+ if (!QtWebEngineCore::closingDown()) {
+ if (auto iface = QAccessible::queryAccessibleInterface(oldDelegateItem))
+ QAccessible::deleteAccessibleInterface(QAccessible::uniqueId(iface));
+ }
#endif
}
- if (newWidget) {
+ if (newDelegateItem) {
Q_ASSERT(!QtWebEngineCore::closingDown());
#if QT_CONFIG(accessibility)
- QAccessible::registerAccessibleInterface(new QtWebEngineCore::RenderWidgetHostViewQtDelegateQuickAccessible(newWidget, q));
+ QAccessible::registerAccessibleInterface(new QtWebEngineCore::RenderWidgetHostViewQtDelegateQuickAccessible(newDelegateItem, q));
#endif
- newWidget->setParentItem(q);
- newWidget->setSize(q->boundingRect().size());
+ newDelegateItem->setParentItem(q);
+ newDelegateItem->setSize(q->boundingRect().size());
// Focus on creation if the view accepts it
if (q->activeFocusOnPress())
- newWidget->setFocus(true);
+ newDelegateItem->setFocus(true);
}
}
@@ -1696,8 +1692,8 @@ void QQuickWebEngineView::geometryChange(const QRectF &newGeometry, const QRectF
{
QQuickItem::geometryChange(newGeometry, oldGeometry);
Q_D(QQuickWebEngineView);
- if (d->widget)
- d->widget->setSize(newGeometry.size());
+ if (d->delegateItem)
+ d->delegateItem->setSize(newGeometry.size());
}
void QQuickWebEngineView::itemChange(ItemChange change, const ItemChangeData &value)
diff --git a/src/webenginequick/api/qquickwebengineview_p_p.h b/src/webenginequick/api/qquickwebengineview_p_p.h
index 9f066af90..f4d5c1a92 100644
--- a/src/webenginequick/api/qquickwebengineview_p_p.h
+++ b/src/webenginequick/api/qquickwebengineview_p_p.h
@@ -178,9 +178,9 @@ public:
void ensureContentsAdapter();
void setFullScreenMode(bool);
- static void bindViewAndWidget(QQuickWebEngineView *view, QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *widget);
- void widgetChanged(QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *oldWidget,
- QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *newWidget);
+ static void bindViewAndDelegateItem(QQuickWebEngineViewPrivate *viewPrivate, QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *delegateItem);
+ void delegateItemChanged(QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *oldDelegateItem,
+ QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *newDelegateItem);
QQuickWebEngineProfile *m_profile;
QSharedPointer<QtWebEngineCore::WebContentsAdapter> adapter;
@@ -204,7 +204,7 @@ public:
bool m_defaultAudioMuted;
bool m_isBeingAdopted;
mutable QQuickWebEngineAction *actions[QQuickWebEngineView::WebActionCount];
- QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *widget = nullptr;
+ QtWebEngineCore::RenderWidgetHostViewQtDelegateItem *delegateItem = nullptr;
bool profileInitialized() const;
QQuickWebEngineScriptCollection *getUserScripts();
diff --git a/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp b/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp
index 911d10c8a..259e3c406 100644
--- a/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp
+++ b/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp
@@ -151,13 +151,13 @@ bool RenderWidgetHostViewQtDelegateQuickWindow::ActiveFocusOnPress()
void RenderWidgetHostViewQtDelegateQuickWindow::Bind(QtWebEngineCore::WebContentsAdapterClient *client)
{
- QQuickWebEngineViewPrivate::bindViewAndWidget(
- static_cast<QQuickWebEngineViewPrivate *>(client)->q_func(), m_realDelegate.data());
+ QQuickWebEngineViewPrivate::bindViewAndDelegateItem(
+ static_cast<QQuickWebEngineViewPrivate *>(client), m_realDelegate.data());
}
void RenderWidgetHostViewQtDelegateQuickWindow::Unbind()
{
- QQuickWebEngineViewPrivate::bindViewAndWidget(nullptr, m_realDelegate.data());
+ QQuickWebEngineViewPrivate::bindViewAndDelegateItem(nullptr, m_realDelegate.data());
}
void RenderWidgetHostViewQtDelegateQuickWindow::Destroy()