summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-25 15:09:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-25 15:09:11 +0200
commita89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd (patch)
treeb7abd9f49ae1d4d2e426a5883bfccd42b8e2ee12 /Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp
parent8d473cf9743f1d30a16a27114e93bd5af5648d23 (diff)
downloadqtwebkit-a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd.tar.gz
Imported WebKit commit eb5c1b8fe4d4b1b90b5137433fc58a91da0e6878 (http://svn.webkit.org/repository/webkit/trunk@118516)
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp33
1 files changed, 28 insertions, 5 deletions
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()