summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorPierre Rossi <pierre.rossi@digia.com>2013-07-31 16:07:01 +0200
committerPierre Rossi <pierre.rossi@gmail.com>2013-08-02 11:24:21 +0200
commitd1e168102555e903d41394484f5a8a0c13f1548f (patch)
tree5ba2ed679bbe39793a5def5399fc6366a36671ec /lib
parent0161c0aca53be2c73e983c12995104308823e41b (diff)
Don't pass the RWHV to the AdapterClient
As this looks like a layering violation. Instead, rely on WebContentsViewImpl::CreateRenderViewForRenderManager querying the WebContentsView's size before setting it on the RenderWidgetHostView. The WebContentsView now gets the size of the actual view through the Adapter interface. Then, in RenderWidgetHostViewQt, we now forward the resize request to the delegate. Change-Id: Ide679f6d114508cc7c9ffac83daad19d16764a4d Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/quick/qquickwebcontentsview.cpp10
-rw-r--r--lib/quick/qquickwebcontentsview_p_p.h4
-rw-r--r--lib/quick/render_widget_host_view_qt_delegate_quick.cpp5
-rw-r--r--lib/quick/render_widget_host_view_qt_delegate_quick.h1
-rw-r--r--lib/render_widget_host_view_qt.cpp11
-rw-r--r--lib/render_widget_host_view_qt.h1
-rw-r--r--lib/render_widget_host_view_qt_delegate.h1
-rw-r--r--lib/web_contents_adapter_client.h4
-rw-r--r--lib/web_contents_view_qt.cpp5
-rw-r--r--lib/widgets/Api/qwebcontentsview.cpp9
-rw-r--r--lib/widgets/Api/qwebcontentsview_p.h3
-rw-r--r--lib/widgets/render_widget_host_view_qt_delegate_widget.cpp5
-rw-r--r--lib/widgets/render_widget_host_view_qt_delegate_widget.h1
13 files changed, 39 insertions, 21 deletions
diff --git a/lib/quick/qquickwebcontentsview.cpp b/lib/quick/qquickwebcontentsview.cpp
index 34107adc5..16e73e679 100644
--- a/lib/quick/qquickwebcontentsview.cpp
+++ b/lib/quick/qquickwebcontentsview.cpp
@@ -53,13 +53,11 @@ QQuickWebContentsViewPrivate::QQuickWebContentsViewPrivate()
{
}
-RenderWidgetHostViewQtDelegate *QQuickWebContentsViewPrivate::CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQt *rwhv)
+RenderWidgetHostViewQtDelegate *QQuickWebContentsViewPrivate::CreateRenderWidgetHostViewQtDelegate()
{
Q_Q(QQuickWebContentsView);
// Parent the RWHVQtDelegate directly, this might have to be changed to handle popups and fullscreen.
RenderWidgetHostViewQtDelegateQuick *viewDelegate = new RenderWidgetHostViewQtDelegateQuick(q);
- viewDelegate->resetView(rwhv);
- viewDelegate->setSize(QSizeF(q->width(), q->height()));
return viewDelegate;
}
@@ -83,6 +81,12 @@ void QQuickWebContentsViewPrivate::loadingStateChanged()
Q_EMIT q->loadingStateChanged();
}
+QRectF QQuickWebContentsViewPrivate::viewportRect() const
+{
+ Q_Q(const QQuickWebContentsView);
+ return QRectF(q->x(), q->y(), q->width(), q->height());
+}
+
QQuickWebContentsView::QQuickWebContentsView()
: d_ptr(new QQuickWebContentsViewPrivate)
{
diff --git a/lib/quick/qquickwebcontentsview_p_p.h b/lib/quick/qquickwebcontentsview_p_p.h
index 6c9c32c46..a9c5b00c0 100644
--- a/lib/quick/qquickwebcontentsview_p_p.h
+++ b/lib/quick/qquickwebcontentsview_p_p.h
@@ -47,6 +47,7 @@
#include <QScopedPointer>
class QQuickWebContentsView;
+class RenderWidgetHostViewQtDelegateQuick;
class WebContentsAdapter;
class QQuickWebContentsViewPrivate : public WebContentsAdapterClient
@@ -56,10 +57,11 @@ class QQuickWebContentsViewPrivate : public WebContentsAdapterClient
public:
QQuickWebContentsViewPrivate();
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQt*) Q_DECL_OVERRIDE;
+ virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate() Q_DECL_OVERRIDE;
virtual void titleChanged(const QString&) Q_DECL_OVERRIDE;
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void loadingStateChanged() Q_DECL_OVERRIDE;
+ virtual QRectF viewportRect() const Q_DECL_OVERRIDE;
QScopedPointer<WebContentsAdapter> adapter;
};
diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
index 5b1269c30..451d92044 100644
--- a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
+++ b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
@@ -101,6 +101,11 @@ void RenderWidgetHostViewQtDelegateQuick::updateCursor(const QCursor &cursor)
QQuickPaintedItem::setCursor(cursor);
}
+void RenderWidgetHostViewQtDelegateQuick::resize(int width, int height)
+{
+ setSize(QSizeF(width, height));
+}
+
void RenderWidgetHostViewQtDelegateQuick::paint(QPainter *painter)
{
RenderWidgetHostViewQtDelegate::paint(painter, boundingRect());
diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.h b/lib/quick/render_widget_host_view_qt_delegate_quick.h
index c46634556..1bf8aa8da 100644
--- a/lib/quick/render_widget_host_view_qt_delegate_quick.h
+++ b/lib/quick/render_widget_host_view_qt_delegate_quick.h
@@ -78,6 +78,7 @@ public:
virtual QWindow* window() const;
virtual void update(const QRect& rect = QRect());
virtual void updateCursor(const QCursor &);
+ virtual void resize(int width, int height);
void paint(QPainter *painter);
diff --git a/lib/render_widget_host_view_qt.cpp b/lib/render_widget_host_view_qt.cpp
index 2d8276cc0..30670ffcd 100644
--- a/lib/render_widget_host_view_qt.cpp
+++ b/lib/render_widget_host_view_qt.cpp
@@ -179,17 +179,8 @@ void RenderWidgetHostViewQt::SetSize(const gfx::Size& size)
{
int width = size.width();
int height = size.height();
- // int width = std::min(size.width(), kMaxWindowWidth);
- // int height = std::min(size.height(), kMaxWindowHeight);
- // if (IsPopup())
- // m_delegate->resize(width,height);
- if (m_requestedSize.width() != width ||
- m_requestedSize.height() != height) {
- m_requestedSize = gfx::Size(width, height);
- // m_host->SendScreenRects();
- m_host->WasResized();
- }
+ m_delegate->resize(width,height);
}
void RenderWidgetHostViewQt::SetBounds(const gfx::Rect& rect)
diff --git a/lib/render_widget_host_view_qt.h b/lib/render_widget_host_view_qt.h
index dbbb89339..0fe3fc48e 100644
--- a/lib/render_widget_host_view_qt.h
+++ b/lib/render_widget_host_view_qt.h
@@ -170,7 +170,6 @@ private:
QMap<int, int> m_touchIdMapping;
WebKit::WebTouchEvent m_accumTouchEvent;
scoped_ptr<RenderWidgetHostViewQtDelegate> m_delegate;
- gfx::Size m_requestedSize;
};
#endif
diff --git a/lib/render_widget_host_view_qt_delegate.h b/lib/render_widget_host_view_qt_delegate.h
index ebf1e0767..2834c224f 100644
--- a/lib/render_widget_host_view_qt_delegate.h
+++ b/lib/render_widget_host_view_qt_delegate.h
@@ -67,6 +67,7 @@ public:
virtual QWindow* window() const = 0;
virtual void update(const QRect& rect = QRect()) = 0;
virtual void updateCursor(const QCursor &) = 0;
+ virtual void resize(int width, int height) = 0;
void resetView(RenderWidgetHostViewQt*);
protected:
diff --git a/lib/web_contents_adapter_client.h b/lib/web_contents_adapter_client.h
index c44b87bb1..02cbbaf0d 100644
--- a/lib/web_contents_adapter_client.h
+++ b/lib/web_contents_adapter_client.h
@@ -43,6 +43,7 @@
#include "qtwebengineglobal.h"
+#include <QRect>
#include <QString>
#include <QUrl>
@@ -55,10 +56,11 @@ class QWEBENGINE_EXPORT WebContentsAdapterClient {
public:
virtual ~WebContentsAdapterClient() { }
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQt*) = 0;
+ virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate() = 0;
virtual void titleChanged(const QString&) = 0;
virtual void urlChanged(const QUrl&) = 0;
virtual void loadingStateChanged() = 0;
+ virtual QRectF viewportRect() const = 0;
};
#endif // WEB_CONTENTS_ADAPTER_CLIENT_H
diff --git a/lib/web_contents_view_qt.cpp b/lib/web_contents_view_qt.cpp
index ba5887541..9d35b622f 100644
--- a/lib/web_contents_view_qt.cpp
+++ b/lib/web_contents_view_qt.cpp
@@ -50,7 +50,8 @@
content::RenderWidgetHostView* WebContentsViewQt::CreateViewForWidget(content::RenderWidgetHost* render_widget_host)
{
RenderWidgetHostViewQt *view = new RenderWidgetHostViewQt(render_widget_host);
- m_viewDelegate = m_client->CreateRenderWidgetHostViewQtDelegate(view);
+ m_viewDelegate = m_client->CreateRenderWidgetHostViewQtDelegate();
+ m_viewDelegate->resetView(view);
view->SetDelegate(m_viewDelegate);
return view;
@@ -64,7 +65,7 @@ void WebContentsViewQt::SetPageTitle(const string16& title)
void WebContentsViewQt::GetContainerBounds(gfx::Rect* out) const
{
- const QRectF r(m_viewDelegate->screenRect());
+ const QRectF r(m_client->viewportRect());
*out = gfx::Rect(r.x(), r.y(), r.width(), r.height());
}
diff --git a/lib/widgets/Api/qwebcontentsview.cpp b/lib/widgets/Api/qwebcontentsview.cpp
index 612f7699b..c1e182b3b 100644
--- a/lib/widgets/Api/qwebcontentsview.cpp
+++ b/lib/widgets/Api/qwebcontentsview.cpp
@@ -77,11 +77,16 @@ void QWebContentsViewPrivate::loadingStateChanged()
}
}
-RenderWidgetHostViewQtDelegate *QWebContentsViewPrivate::CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQt* rwhv)
+QRectF QWebContentsViewPrivate::viewportRect() const
+{
+ Q_Q(const QWebContentsView);
+ return q->geometry();
+}
+
+RenderWidgetHostViewQtDelegate *QWebContentsViewPrivate::CreateRenderWidgetHostViewQtDelegate()
{
Q_Q(QWebContentsView);
RenderWidgetHostViewQtDelegateWidget *viewDelegate = new RenderWidgetHostViewQtDelegateWidget(q);
- viewDelegate->resetView(rwhv);
// Parent the RWHVQtDelegate directly, this might have to be changed to handle popups and fullscreen.
q->layout()->addWidget(viewDelegate);
return viewDelegate;
diff --git a/lib/widgets/Api/qwebcontentsview_p.h b/lib/widgets/Api/qwebcontentsview_p.h
index ba3739c4b..badf72673 100644
--- a/lib/widgets/Api/qwebcontentsview_p.h
+++ b/lib/widgets/Api/qwebcontentsview_p.h
@@ -58,10 +58,11 @@ class QWebContentsViewPrivate : public WebContentsAdapterClient
public:
QWebContentsViewPrivate();
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQt *) Q_DECL_OVERRIDE;
+ virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate() Q_DECL_OVERRIDE;
virtual void titleChanged(const QString&) Q_DECL_OVERRIDE;
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void loadingStateChanged() Q_DECL_OVERRIDE;
+ virtual QRectF viewportRect() const Q_DECL_OVERRIDE;
bool m_isLoading;
QScopedPointer<WebContentsAdapter> adapter;
diff --git a/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp b/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp
index 4164ce242..1e696537e 100644
--- a/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp
+++ b/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp
@@ -115,6 +115,11 @@ void RenderWidgetHostViewQtDelegateWidget::updateCursor(const QCursor &cursor)
QWidget::setCursor(cursor);
}
+void RenderWidgetHostViewQtDelegateWidget::resize(int width, int height)
+{
+ QWidget::resize(width, height);
+}
+
void RenderWidgetHostViewQtDelegateWidget::paintEvent(QPaintEvent * event)
{
QPainter painter(this);
diff --git a/lib/widgets/render_widget_host_view_qt_delegate_widget.h b/lib/widgets/render_widget_host_view_qt_delegate_widget.h
index 514c276df..240f29ba5 100644
--- a/lib/widgets/render_widget_host_view_qt_delegate_widget.h
+++ b/lib/widgets/render_widget_host_view_qt_delegate_widget.h
@@ -63,6 +63,7 @@ public:
virtual QWindow* window() const;
virtual void update(const QRect& rect = QRect());
virtual void updateCursor(const QCursor &);
+ virtual void resize(int width, int height);
protected:
void paintEvent(QPaintEvent * event);