Diff
Modified: trunk/Source/WebKit2/ChangeLog (117942 => 117943)
--- trunk/Source/WebKit2/ChangeLog 2012-05-22 10:45:24 UTC (rev 117942)
+++ trunk/Source/WebKit2/ChangeLog 2012-05-22 10:49:20 UTC (rev 117943)
@@ -1,5 +1,20 @@
2012-05-22 Kenneth Rohde Christiansen <[email protected]>
+ [Qt] Make the resizing code more straight forward
+ https://bugs.webkit.org/show_bug.cgi?id=87015
+
+ Reviewed by Simon Hausmann.
+
+ * UIProcess/API/qt/qquickwebpage.cpp:
+ (QQuickWebPage::transformToItem):
+ (QQuickWebPagePrivate::updateSize):
+ * UIProcess/API/qt/qquickwebview.cpp:
+ * UIProcess/API/qt/qquickwebview_p.h:
+ * UIProcess/API/qt/qquickwebview_p_p.h:
+ (QQuickWebViewFlickablePrivate):
+
+2012-05-22 Kenneth Rohde Christiansen <[email protected]>
+
[Qt] Add UI tests for fit-to-view
https://bugs.webkit.org/show_bug.cgi?id=86857
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp (117942 => 117943)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp 2012-05-22 10:45:24 UTC (rev 117942)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp 2012-05-22 10:49:20 UTC (rev 117943)
@@ -140,18 +140,41 @@
QTransform QQuickWebPage::transformToItem() const
{
- QPointF pos = d->viewportItem->pageItemPos();
- return QTransform(d->contentsScale, 0, 0, 0, d->contentsScale, 0, pos.x(), pos.y(), 1);
+ qreal xPos = x();
+ qreal yPos = y();
+
+ if (d->viewportItem->experimental()->flickableViewportEnabled()) {
+ // Flickable moves its contentItem so we need to take that position into
+ // account, as well as the potential displacement of the page on the
+ // contentItem because of additional QML items.
+ xPos += d->viewportItem->contentItem()->x();
+ yPos += d->viewportItem->contentItem()->y();
+ }
+
+ return QTransform(d->contentsScale, 0, 0, 0, d->contentsScale, 0, xPos, yPos, 1);
}
void QQuickWebPagePrivate::updateSize()
{
QSizeF scaledSize = contentsSize * contentsScale;
- q->setSize(scaledSize);
- viewportItem->updateContentsSize(scaledSize);
+
DrawingAreaProxy* drawingArea = webPageProxy->drawingArea();
if (drawingArea && drawingArea->layerTreeHostProxy())
drawingArea->layerTreeHostProxy()->setContentsSize(WebCore::FloatSize(contentsSize.width(), contentsSize.height()));
+
+ q->setSize(scaledSize);
+
+ if (viewportItem->experimental()->flickableViewportEnabled()) {
+ // Make sure that the content is sized to the page if the user did not
+ // add other flickable items. If that is not the case, the user needs to
+ // disable the default content item size property on the WebView and
+ // bind the contentWidth and contentHeight accordingly, in accordance
+ // accordance with normal Flickable behaviour.
+ if (viewportItem->experimental()->useDefaultContentItemSize()) {
+ viewportItem->setContentWidth(scaledSize.width());
+ viewportItem->setContentHeight(scaledSize.height());
+ }
+ }
}
QQuickWebPagePrivate::~QQuickWebPagePrivate()
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp (117942 => 117943)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp 2012-05-22 10:45:24 UTC (rev 117942)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp 2012-05-22 10:49:20 UTC (rev 117943)
@@ -324,12 +324,6 @@
return webPageProxy->drawsTransparentBackground();
}
-QPointF QQuickWebViewPrivate::pageItemPos()
-{
- ASSERT(pageView);
- return pageView->pos();
-}
-
/*!
\qmlsignal WebView::loadingChanged(WebLoadRequest request)
*/
@@ -798,34 +792,6 @@
webPageProxy->setUseFixedLayout(true);
}
-QPointF QQuickWebViewFlickablePrivate::pageItemPos()
-{
- Q_Q(QQuickWebView);
- // Flickable moves its contentItem so we need to take that position into account,
- // as well as the potential displacement of the page on the contentItem because
- // of additional QML items.
- qreal xPos = q->contentItem()->x() + pageView->x();
- qreal yPos = q->contentItem()->y() + pageView->y();
- return QPointF(xPos, yPos);
-}
-
-void QQuickWebViewFlickablePrivate::updateContentsSize(const QSizeF& size)
-{
- Q_Q(QQuickWebView);
-
- // Make sure that the contentItem is sized to the page
- // if the user did not add other flickable items in QML.
- // If the user adds items in QML he has to make sure to
- // disable the default content item size property on the WebView
- // and bind the contentWidth and contentHeight accordingly.
- // This is in accordance with normal QML Flickable behaviour.
- if (!m_useDefaultContentItemSize)
- return;
-
- q->setContentWidth(size.width());
- q->setContentHeight(size.height());
-}
-
void QQuickWebViewFlickablePrivate::onComponentComplete()
{
Q_Q(QQuickWebView);
@@ -1839,18 +1805,6 @@
d->webPageProxy->loadHTMLString(html, baseUrl.toString());
}
-QPointF QQuickWebView::pageItemPos()
-{
- Q_D(QQuickWebView);
- return d->pageItemPos();
-}
-
-void QQuickWebView::updateContentsSize(const QSizeF& size)
-{
- Q_D(QQuickWebView);
- d->updateContentsSize(size);
-}
-
qreal QQuickWebView::zoomFactor() const
{
Q_D(const QQuickWebView);
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h (117942 => 117943)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h 2012-05-22 10:45:24 UTC (rev 117942)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h 2012-05-22 10:49:20 UTC (rev 117943)
@@ -141,10 +141,6 @@
static void platformInitialize(); // Only needed by WTR.
- // Internal API used by WebPage.
- void updateContentsSize(const QSizeF&);
- QPointF pageItemPos();
-
// Private C++-only API.
qreal zoomFactor() const;
void setZoomFactor(qreal);
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h (117942 => 117943)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h 2012-05-22 10:45:24 UTC (rev 117942)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h 2012-05-22 10:49:20 UTC (rev 117943)
@@ -74,9 +74,6 @@
virtual void enableMouseEvents() { }
virtual void disableMouseEvents() { }
- virtual QPointF pageItemPos();
- virtual void updateContentsSize(const QSizeF&) { }
-
virtual void provisionalLoadDidStart(const QUrl& url);
virtual void loadDidCommit();
virtual void didSameDocumentNavigation();
@@ -226,9 +223,6 @@
virtual void onComponentComplete();
- virtual QPointF pageItemPos();
- virtual void updateContentsSize(const QSizeF&);
-
virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&);
virtual WebKit::QtViewportInteractionEngine* viewportInteractionEngine() { return interactionEngine.data(); }
virtual void updateViewportSize();