summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-04-01 10:27:13 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-08 14:00:06 +0200
commit84f31c11b77a62212451cb77adae63219e06de96 (patch)
tree97d252eee0ee8716d1a7165cd714b0d5b9552ebb /src/core
parent3cb5203cb7a4bee9a867e8616c23ce635d6a8506 (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.cpp3
-rw-r--r--src/core/render_widget_host_view_qt.cpp6
-rw-r--r--src/core/type_conversion.h5
-rw-r--r--src/core/web_contents_adapter.cpp7
-rw-r--r--src/core/web_contents_adapter.h1
-rw-r--r--src/core/web_contents_adapter_client.h1
-rw-r--r--src/core/web_contents_view_qt.cpp3
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;
}