diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2014-04-01 10:27:13 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-08 14:00:06 +0200 |
commit | 84f31c11b77a62212451cb77adae63219e06de96 (patch) | |
tree | 97d252eee0ee8716d1a7165cd714b0d5b9552ebb /src/core | |
parent | 3cb5203cb7a4bee9a867e8616c23ce635d6a8506 (diff) |
Revert part of the RenderWidgetHostViewQtDelegate refactoring
This reverts parts of commit 9c198939be1ef064d1a2430a4b9991f2fe16f359.
This does keeps the popup fixes and removes support for
QWebEnginePage::setViewportSize and QWebEnginePage::render until
we can evaluate the needs vs the cost of such feature.
Change-Id: I1b55b751d463717b1462393ea8cd353422f8fdbb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/backing_store_qt.cpp | 3 | ||||
-rw-r--r-- | src/core/render_widget_host_view_qt.cpp | 6 | ||||
-rw-r--r-- | src/core/type_conversion.h | 5 | ||||
-rw-r--r-- | src/core/web_contents_adapter.cpp | 7 | ||||
-rw-r--r-- | src/core/web_contents_adapter.h | 1 | ||||
-rw-r--r-- | src/core/web_contents_adapter_client.h | 1 | ||||
-rw-r--r-- | src/core/web_contents_view_qt.cpp | 3 |
7 files changed, 22 insertions, 4 deletions
diff --git a/src/core/backing_store_qt.cpp b/src/core/backing_store_qt.cpp index fda60d094..613dfdbbc 100644 --- a/src/core/backing_store_qt.cpp +++ b/src/core/backing_store_qt.cpp @@ -70,12 +70,11 @@ BackingStoreQt::~BackingStoreQt() { } -void BackingStoreQt::paintToTarget(QPainter* painter, const QRectF& clipRect) +void BackingStoreQt::paintToTarget(QPainter* painter, const QRectF& rect) { if (m_pixelBuffer.isNull()) return; - QRectF rect = clipRect.isNull() ? m_pixelBuffer.rect() : clipRect; qreal x = rect.x() * m_deviceScaleFactor; qreal y = rect.y() * m_deviceScaleFactor; qreal w = rect.width() * m_deviceScaleFactor; diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index f04a2089e..7430f6756 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -218,7 +218,9 @@ void RenderWidgetHostViewQt::InitAsChild(gfx::NativeView) void RenderWidgetHostViewQt::InitAsPopup(content::RenderWidgetHostView*, const gfx::Rect& rect) { - m_delegate->initAsPopup(toQt(rect)); + QRect screenRect = toQt(rect); + screenRect.moveTo(m_adapterClient->mapToGlobal(screenRect.topLeft())); + m_delegate->initAsPopup(screenRect); } void RenderWidgetHostViewQt::InitAsFullscreen(content::RenderWidgetHostView*) @@ -242,7 +244,7 @@ void RenderWidgetHostViewQt::SetBounds(const gfx::Rect& rect) { // This is called when webkit has sent us a Move message. if (IsPopup()) - m_delegate->move(QPoint(rect.x(), rect.y())); + m_delegate->move(m_adapterClient->mapToGlobal(toQt(rect.origin()))); SetSize(rect.size()); } diff --git a/src/core/type_conversion.h b/src/core/type_conversion.h index 5d5dc356d..f00628074 100644 --- a/src/core/type_conversion.h +++ b/src/core/type_conversion.h @@ -89,6 +89,11 @@ inline GURL toGurl(const QUrl& url) return GURL(url.toString().toStdString()); } +inline QPoint toQt(const gfx::Point &point) +{ + return QPoint(point.x(), point.y()); +} + inline QRect toQt(const gfx::Rect &rect) { return QRect(rect.x(), rect.y(), rect.width(), rect.height()); diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 7fbda1ab6..6c3b68b6a 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -383,6 +383,13 @@ void WebContentsAdapter::initialize(WebContentsAdapterClient *adapterClient) } +void WebContentsAdapter::reattachRWHV() +{ + Q_D(WebContentsAdapter); + if (content::RenderWidgetHostView *rwhv = d->webContents->GetRenderWidgetHostView()) + rwhv->InitAsChild(0); +} + bool WebContentsAdapter::canGoBack() const { Q_D(const WebContentsAdapter); diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h index 6ce15aa6a..6e274f4e3 100644 --- a/src/core/web_contents_adapter.h +++ b/src/core/web_contents_adapter.h @@ -61,6 +61,7 @@ public: WebContentsAdapter(WebContentsAdapterClient::RenderingMode renderingMode, content::WebContents *webContents = 0); ~WebContentsAdapter(); void initialize(WebContentsAdapterClient *adapterClient); + void reattachRWHV(); bool canGoBack() const; bool canGoForward() const; diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h index 0cb4e3d10..3a9d9dd93 100644 --- a/src/core/web_contents_adapter_client.h +++ b/src/core/web_contents_adapter_client.h @@ -122,6 +122,7 @@ public: virtual void loadProgressChanged(int progress) = 0; virtual void selectionChanged() = 0; virtual QRectF viewportRect() const = 0; + virtual QPoint mapToGlobal(const QPoint &posInView) const = 0; virtual qreal dpiScale() const = 0; virtual void loadStarted(const QUrl &provisionalUrl) = 0; virtual void loadCommitted() = 0; diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp index e3cc5963b..8a9daeec0 100644 --- a/src/core/web_contents_view_qt.cpp +++ b/src/core/web_contents_view_qt.cpp @@ -76,8 +76,11 @@ content::RenderWidgetHostView* WebContentsViewQt::CreateViewForWidget(content::R content::RenderWidgetHostView* WebContentsViewQt::CreateViewForPopupWidget(content::RenderWidgetHost* render_widget_host) { RenderWidgetHostViewQt *view = new RenderWidgetHostViewQt(render_widget_host); + Q_ASSERT(m_client); view->setDelegate(m_client->CreateRenderWidgetHostViewQtDelegateForPopup(view, WebEngineContext::current()->renderingMode())); + view->setAdapterClient(m_client); + return view; } |