diff options
author | Pierre Rossi <pierre.rossi@digia.com> | 2013-07-31 16:07:01 +0200 |
---|---|---|
committer | Pierre Rossi <pierre.rossi@gmail.com> | 2013-08-02 11:24:21 +0200 |
commit | d1e168102555e903d41394484f5a8a0c13f1548f (patch) | |
tree | 5ba2ed679bbe39793a5def5399fc6366a36671ec /lib | |
parent | 0161c0aca53be2c73e983c12995104308823e41b (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.cpp | 10 | ||||
-rw-r--r-- | lib/quick/qquickwebcontentsview_p_p.h | 4 | ||||
-rw-r--r-- | lib/quick/render_widget_host_view_qt_delegate_quick.cpp | 5 | ||||
-rw-r--r-- | lib/quick/render_widget_host_view_qt_delegate_quick.h | 1 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt.cpp | 11 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt.h | 1 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt_delegate.h | 1 | ||||
-rw-r--r-- | lib/web_contents_adapter_client.h | 4 | ||||
-rw-r--r-- | lib/web_contents_view_qt.cpp | 5 | ||||
-rw-r--r-- | lib/widgets/Api/qwebcontentsview.cpp | 9 | ||||
-rw-r--r-- | lib/widgets/Api/qwebcontentsview_p.h | 3 | ||||
-rw-r--r-- | lib/widgets/render_widget_host_view_qt_delegate_widget.cpp | 5 | ||||
-rw-r--r-- | lib/widgets/render_widget_host_view_qt_delegate_widget.h | 1 |
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); |