summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-02-21 13:53:46 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-21 18:21:47 +0100
commit3aad2a0615449dc8e5bd9fb8d68eaf03733d8eb5 (patch)
tree4eba5db5bec10c97ca2d902c8ca19298a9007864
parent6a2ecb47b9e3c78e7c947549d7d3aff2a903a5fe (diff)
Implement QWebEnginePage::viewportSize
Keep the size in the page itself, and ask the optionally attached QWebEngineView only for the rect position. When the view size change, call setViewportSize on the page like QtWebKit does. Change-Id: I735f1509cab9ef9b5d32bf31249a59c919939804 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp15
-rw-r--r--src/webenginewidgets/api/qwebenginepage.h2
-rw-r--r--src/webenginewidgets/api/qwebenginepage_p.h3
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp1
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.cpp11
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.h2
6 files changed, 24 insertions, 10 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 3436d86cf..83f77b4bd 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -216,7 +216,10 @@ void QWebEnginePagePrivate::selectionChanged()
QRectF QWebEnginePagePrivate::viewportRect() const
{
- return view ? view->geometry() : QRectF();
+ QRectF rect(QPointF(), viewportSize);
+ if (view)
+ rect.setTopLeft(view->rect().topLeft());
+ return rect;
}
qreal QWebEnginePagePrivate::dpiScale() const
@@ -500,10 +503,16 @@ void QWebEnginePage::findText(const QString &subString, FindFlags options, const
}
}
-void QWebEnginePage::setViewportSize(const QSize &size) const
+QSize QWebEnginePage::viewportSize() const
{
- Q_UNUSED(size)
Q_D(const QWebEnginePage);
+ return d->viewportSize;
+}
+
+void QWebEnginePage::setViewportSize(const QSize &size)
+{
+ Q_D(QWebEnginePage);
+ d->viewportSize = size;
if (d->m_rwhvDelegate)
d->m_rwhvDelegate->notifyResize();
}
diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h
index aac37bc99..96ffeda3a 100644
--- a/src/webenginewidgets/api/qwebenginepage.h
+++ b/src/webenginewidgets/api/qwebenginepage.h
@@ -355,7 +355,7 @@ public:
virtual void triggerAction(WebAction action, bool checked = false);
QSize viewportSize() const;
- void setViewportSize(const QSize &size) const;
+ void setViewportSize(const QSize &size);
ViewportAttributes viewportAttributesForSize(const QSize& availableSize) const;
QSize preferredContentsSize() const;
diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h
index ed21c3816..773df00d4 100644
--- a/src/webenginewidgets/api/qwebenginepage_p.h
+++ b/src/webenginewidgets/api/qwebenginepage_p.h
@@ -142,13 +142,14 @@ public:
QExplicitlySharedDataPointer<WebContentsAdapter> adapter;
QWebEngineHistory *history;
QWebEngineView *view;
- mutable QAction *actions[QWebEnginePage::WebActionCount];
+ QSize viewportSize;
bool m_isLoading;
QUrl m_explicitUrl;
WebEngineContextMenuData m_menuData;
QPointer<RenderWidgetHostViewQtDelegateWebPage> m_rwhvDelegate;
mutable CallbackDirectory m_callbacks;
+ mutable QAction *actions[QWebEnginePage::WebActionCount];
};
QT_END_NAMESPACE
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 3d884f464..a29349052 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -81,6 +81,7 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page)
QObject::connect(page, &QWebEnginePage::loadProgress, view, &QWebEngineView::loadProgress);
QObject::connect(page, &QWebEnginePage::loadFinished, view, &QWebEngineView::loadFinished);
QObject::connect(page, &QWebEnginePage::selectionChanged, view, &QWebEngineView::selectionChanged);
+ page->setViewportSize(view->size());
}
}
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.cpp
index 2da55f66e..d6e99f4ea 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.cpp
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.cpp
@@ -54,21 +54,22 @@
RenderWidgetHostViewQtDelegateWebPage::RenderWidgetHostViewQtDelegateWebPage(RenderWidgetHostViewQtDelegateClient *client)
: m_client(client)
, m_page(0)
+ , m_pagePrivate(0)
{
}
void RenderWidgetHostViewQtDelegateWebPage::initAsChild(WebContentsAdapterClient* container)
{
- QWebEnginePagePrivate *pagePrivate = static_cast<QWebEnginePagePrivate *>(container);
- pagePrivate->m_rwhvDelegate = this;
- m_page = pagePrivate->q_func();
+ m_pagePrivate = static_cast<QWebEnginePagePrivate *>(container);
+ m_pagePrivate->m_rwhvDelegate = this;
+ m_page = m_pagePrivate->q_func();
Q_ASSERT(m_page);
}
QRectF RenderWidgetHostViewQtDelegateWebPage::screenRect() const
{
- if (m_page && m_page->view())
- return m_page->view()->rect();
+ if (m_pagePrivate)
+ return m_pagePrivate->viewportRect();
// FIXME: figure out what to do with QWebFrame::contentsSize vs. preferedContentsSize
return QRectF(0, 0, 800, 600);
}
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.h b/src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.h
index 5674e61c1..52988aefa 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.h
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_webpage.h
@@ -52,6 +52,7 @@ class BackingStoreQt;
QT_BEGIN_NAMESPACE
class QWindow;
class QWebEnginePage;
+class QWebEnginePagePrivate;
QT_END_NAMESPACE
class RenderWidgetHostViewQtDelegateWebPage : public QObject, public RenderWidgetHostViewQtDelegate
@@ -86,6 +87,7 @@ protected:
private:
RenderWidgetHostViewQtDelegateClient *m_client;
QWebEnginePage *m_page;
+ QWebEnginePagePrivate *m_pagePrivate;
};
#endif