summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp
diff options
context:
space:
mode:
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()