From a4b0e2183c23c0173167833c75f0e2970f3ab524 Mon Sep 17 00:00:00 2001 From: Arvid Nilsson Date: Fri, 13 Dec 2013 15:57:26 +0100 Subject: Quick: Support reparenting To support reparenting, we make the compositing surface independent of the window by using gfx::TEXTURE_TRANSPORT. We also need to be able to keep frame data across window changes so we can reconstruct the QSGNode tree in a new context, so extract that data into DelegatedFrameNodeData class. Any context-specific data is still stored in DelegatedFrameNode. Also hook up window changes to WebContents::WasShown/Hidden for Quick. Remove checking of Qt isVisible state, this mechanism is used to sync Chromium with Qt, not the other way around. WasShown/Hidden is orthogonal to Show/Hide, and can use different triggers. However for Widgets it probably makes sense to hook both up to widget visibility. Change-Id: I1ef4b50cd61b8e54b791e03f0b41929c42fec8bf Reviewed-by: Jocelyn Turcotte --- src/webengine/api/qquickwebengineview.cpp | 12 ++++++++++++ src/webengine/api/qquickwebengineview_p.h | 1 + 2 files changed, 13 insertions(+) (limited to 'src/webengine/api') diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 792102631..049e353b6 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -453,6 +453,18 @@ void QQuickWebEngineView::geometryChanged(const QRectF &newGeometry, const QRect } } +void QQuickWebEngineView::itemChange(ItemChange change, const ItemChangeData &value) +{ + Q_D(QQuickWebEngineView); + if (change == ItemSceneChange || change == ItemVisibleHasChanged) { + if (window() && isVisible()) + d->adapter->wasShown(); + else + d->adapter->wasHidden(); + } + QQuickItem::itemChange(change, value); +} + QQuickWebEngineViewHandle::QQuickWebEngineViewHandle() { } diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index 6b7b44e63..abc46d55f 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -111,6 +111,7 @@ Q_SIGNALS: protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); + void itemChange(ItemChange, const ItemChangeData &); private: Q_DECLARE_PRIVATE(QQuickWebEngineView) -- cgit v1.2.3