From a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 25 May 2012 15:09:11 +0200 Subject: Imported WebKit commit eb5c1b8fe4d4b1b90b5137433fc58a91da0e6878 (http://svn.webkit.org/repository/webkit/trunk@118516) --- Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp | 33 +++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp') diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp index e02ccc9b2..178e2dade 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp @@ -140,18 +140,41 @@ QTransform QQuickWebPage::transformFromItem() const 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())); + drawingArea->layerTreeHostProxy()->setContentsSize(contentsSize); + + 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() -- cgit v1.2.1