Modified: trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp (118909 => 118910)
--- trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp 2012-05-30 09:37:01 UTC (rev 118909)
+++ trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp 2012-05-30 10:28:07 UTC (rev 118910)
@@ -125,9 +125,9 @@
return itemRect;
}
-QtViewportInteractionEngine::QtViewportInteractionEngine(QQuickWebView* viewport, QQuickWebPage* content)
- : m_viewport(viewport)
- , m_content(content)
+QtViewportInteractionEngine::QtViewportInteractionEngine(QQuickWebView* viewportItem, QQuickWebPage* pageItem)
+ : m_viewportItem(viewportItem)
+ , m_pageItem(pageItem)
, m_suspendCount(0)
, m_hasSuspendedContent(false)
, m_hadUserInteraction(false)
@@ -137,10 +137,10 @@
{
reset();
- connect(m_content, SIGNAL(widthChanged()), SLOT(itemSizeChanged()), Qt::DirectConnection);
- connect(m_content, SIGNAL(heightChanged()), SLOT(itemSizeChanged()), Qt::DirectConnection);
- connect(m_viewport, SIGNAL(movementStarted()), SLOT(flickableMoveStarted()), Qt::DirectConnection);
- connect(m_viewport, SIGNAL(movementEnded()), SLOT(flickableMoveEnded()), Qt::DirectConnection);
+ connect(m_pageItem, SIGNAL(widthChanged()), SLOT(itemSizeChanged()), Qt::DirectConnection);
+ connect(m_pageItem, SIGNAL(heightChanged()), SLOT(itemSizeChanged()), Qt::DirectConnection);
+ connect(m_viewportItem, SIGNAL(movementStarted()), SLOT(flickableMoveStarted()), Qt::DirectConnection);
+ connect(m_viewportItem, SIGNAL(movementEnded()), SLOT(flickableMoveEnded()), Qt::DirectConnection);
connect(m_scaleAnimation, SIGNAL(valueChanged(QVariant)),
SLOT(scaleAnimationValueChanged(QVariant)), Qt::DirectConnection);
@@ -176,15 +176,15 @@
if (itemRect.isEmpty())
return;
- qreal itemScale = m_viewport->width() / itemRect.width();
+ qreal itemScale = m_viewportItem->width() / itemRect.width();
- m_content->setContentsScale(itemScale);
+ m_pageItem->setContentsScale(itemScale);
// To animate the position together with the scale we multiply the position with the current scale
// and add it to the page position (displacement on the flickable contentItem because of additional items).
- QPointF newPosition(m_content->pos() + (itemRect.topLeft() * itemScale));
+ QPointF newPosition(m_pageItem->pos() + (itemRect.topLeft() * itemScale));
- m_viewport->setContentPos(newPosition);
+ m_viewportItem->setContentPos(newPosition);
}
// Ease out overshoot of 1.25 combined with ease in correction of 0.25. Both quadratic to have physical motion.
@@ -201,7 +201,7 @@
if (scrollAnimationActive())
return;
- QRectF currentItemRectVisible = m_viewport->mapRectToWebContent(m_viewport->boundingRect());
+ QRectF currentItemRectVisible = m_viewportItem->mapRectToWebContent(m_viewportItem->boundingRect());
if (itemRect == currentItemRectVisible)
return;
@@ -219,28 +219,28 @@
void QtViewportInteractionEngine::flickableMoveStarted()
{
- Q_ASSERT(m_viewport->isMoving());
+ Q_ASSERT(m_viewportItem->isMoving());
m_scrollUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent));
- m_lastScrollPosition = m_viewport->contentPos();
- connect(m_viewport, SIGNAL(contentXChanged()), SLOT(flickableMovingPositionUpdate()));
- connect(m_viewport, SIGNAL(contentYChanged()), SLOT(flickableMovingPositionUpdate()));
+ m_lastScrollPosition = m_viewportItem->contentPos();
+ connect(m_viewportItem, SIGNAL(contentXChanged()), SLOT(flickableMovingPositionUpdate()));
+ connect(m_viewportItem, SIGNAL(contentYChanged()), SLOT(flickableMovingPositionUpdate()));
}
void QtViewportInteractionEngine::flickableMoveEnded()
{
- Q_ASSERT(!m_viewport->isMoving());
+ Q_ASSERT(!m_viewportItem->isMoving());
// This method is called on the end of the pan or pan kinetic animation.
m_scrollUpdateDeferrer.clear();
m_lastScrollPosition = QPointF();
- disconnect(m_viewport, SIGNAL(contentXChanged()), this, SLOT(flickableMovingPositionUpdate()));
- disconnect(m_viewport, SIGNAL(contentYChanged()), this, SLOT(flickableMovingPositionUpdate()));
+ disconnect(m_viewportItem, SIGNAL(contentXChanged()), this, SLOT(flickableMovingPositionUpdate()));
+ disconnect(m_viewportItem, SIGNAL(contentYChanged()), this, SLOT(flickableMovingPositionUpdate()));
}
void QtViewportInteractionEngine::flickableMovingPositionUpdate()
{
- QPointF newPosition = m_viewport->contentPos();
+ QPointF newPosition = m_viewportItem->contentPos();
emit informVisibleContentChange(m_lastScrollPosition - newPosition);
@@ -251,7 +251,7 @@
{
switch (newState) {
case QAbstractAnimation::Running:
- m_viewport->cancelFlick();
+ m_viewportItem->cancelFlick();
ASSERT(!m_animationUpdateDeferrer);
m_animationUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent));
break;
@@ -275,12 +275,12 @@
if (m_suspendCount)
return;
- qreal endItemScale = m_content->contentsScale(); // Stay at same scale.
+ qreal endItemScale = m_pageItem->contentsScale(); // Stay at same scale.
QRectF endPosRange = computePosRangeForItemAtScale(endItemScale);
QPointF endPosition = boundPosition(endPosRange.topLeft(), pagePosition * endItemScale, endPosRange.bottomRight());
- QRectF endVisibleContentRect(endPosition / endItemScale, m_viewport->boundingRect().size() / endItemScale);
+ QRectF endVisibleContentRect(endPosition / endItemScale, m_viewportItem->boundingRect().size() / endItemScale);
ViewportUpdateDeferrer guard(this);
setItemRectVisible(endVisibleContentRect);
@@ -302,8 +302,8 @@
QRectF QtViewportInteractionEngine::computePosRangeForItemAtScale(qreal itemScale) const
{
- const QSizeF contentItemSize = m_content->contentsSize() * itemScale;
- const QSizeF viewportItemSize = m_viewport->boundingRect().size();
+ const QSizeF contentItemSize = m_pageItem->contentsSize() * itemScale;
+ const QSizeF viewportItemSize = m_viewportItem->boundingRect().size();
const qreal horizontalRange = contentItemSize.width() - viewportItemSize.width();
const qreal verticalRange = contentItemSize.height() - viewportItemSize.height();
@@ -319,7 +319,7 @@
QRectF endArea = itemRectFromCSS(targetArea);
qreal endItemScale = itemScaleFromCSS(innerBoundedCSSScale(2.0));
- const QRectF viewportRect = m_viewport->boundingRect();
+ const QRectF viewportRect = m_viewportItem->boundingRect();
qreal x;
const qreal borderOffset = 10;
@@ -362,12 +362,12 @@
const int margin = 10; // We want at least a little bit of margin.
QRectF endArea = itemRectFromCSS(targetArea.adjusted(-margin, -margin, margin, margin));
- const QRectF viewportRect = m_viewport->boundingRect();
+ const QRectF viewportRect = m_viewportItem->boundingRect();
qreal targetCSSScale = viewportRect.size().width() / endArea.size().width();
qreal endCSSScale = innerBoundedCSSScale(qMin(targetCSSScale, qreal(2.5)));
qreal endItemScale = itemScaleFromCSS(endCSSScale);
- qreal currentScale = m_content->contentsScale();
+ qreal currentScale = m_pageItem->contentsScale();
// We want to end up with the target area filling the whole width of the viewport (if possible),
// and centralized vertically where the user requested zoom. Thus our hotspot is the center of
@@ -390,7 +390,7 @@
// Use fuzzy compare with a fixed error to be able to deal with largish differences due to pixel rounding.
if (fuzzyCompare(endItemScale, currentScale, 0.01)) {
// If moving the viewport would expose more of the targetRect and move at least 40 pixels, update position but do not scale out.
- QRectF currentContentRect(m_viewport->contentPos() / currentScale, viewportRect.size() / currentScale);
+ QRectF currentContentRect(m_viewportItem->contentPos() / currentScale, viewportRect.size() / currentScale);
QRectF targetIntersection = endVisibleContentRect.intersected(targetArea);
if (!currentContentRect.contains(targetIntersection) && (qAbs(endVisibleContentRect.top() - currentContentRect.top()) >= 40 || qAbs(endVisibleContentRect.left() - currentContentRect.left()) >= 40))
zoomAction = NoZoom;
@@ -404,7 +404,7 @@
switch (zoomAction) {
case ZoomIn:
- m_scaleStack.append(ScaleStackItem(currentScale, m_viewport->contentPos().x()));
+ m_scaleStack.append(ScaleStackItem(currentScale, m_viewportItem->contentPos().x()));
m_zoomOutScale = endItemScale;
break;
case ZoomBack: {
@@ -436,10 +436,10 @@
{
qreal endItemScale = itemScaleFromCSS(innerBoundedCSSScale(currentCSSScale()));
- const QRectF viewportRect = m_viewport->boundingRect();
+ const QRectF viewportRect = m_viewportItem->boundingRect();
QPointF viewportHotspot = viewportRect.center();
- QPointF endPosition = m_viewport->mapToWebContent(viewportHotspot) * endItemScale - viewportHotspot;
+ QPointF endPosition = m_viewportItem->mapToWebContent(viewportHotspot) * endItemScale - viewportHotspot;
QRectF endPosRange = computePosRangeForItemAtScale(endItemScale);
endPosition = boundPosition(endPosRange.topLeft(), endPosition, endPosRange.bottomRight());
@@ -462,7 +462,7 @@
m_pinchStartScale = -1;
m_zoomOutScale = 0.0;
- m_viewport->cancelFlick();
+ m_viewportItem->cancelFlick();
m_scaleAnimation->stop();
m_scaleUpdateDeferrer.clear();
m_scrollUpdateDeferrer.clear();
@@ -480,22 +480,22 @@
ViewportUpdateDeferrer guard(this);
qreal newScale = innerBoundedCSSScale(scale);
- m_content->setContentsScale(itemScaleFromCSS(newScale));
+ m_pageItem->setContentsScale(itemScaleFromCSS(newScale));
}
qreal QtViewportInteractionEngine::currentCSSScale() const
{
- return cssScaleFromItem(m_content->contentsScale());
+ return cssScaleFromItem(m_pageItem->contentsScale());
}
bool QtViewportInteractionEngine::scrollAnimationActive() const
{
- return m_viewport->isFlicking();
+ return m_viewportItem->isFlicking();
}
bool QtViewportInteractionEngine::panGestureActive() const
{
- return m_viewport->isDragging();
+ return m_viewportItem->isDragging();
}
void QtViewportInteractionEngine::panGestureStarted(const QPointF& position, qint64 eventTimestampMillis)
@@ -503,19 +503,19 @@
// This can only happen as a result of a user interaction.
ASSERT(m_hadUserInteraction);
- m_viewport->handleFlickableMousePress(position, eventTimestampMillis);
+ m_viewportItem->handleFlickableMousePress(position, eventTimestampMillis);
m_lastPinchCenterInViewportCoordinates = position;
}
void QtViewportInteractionEngine::panGestureRequestUpdate(const QPointF& position, qint64 eventTimestampMillis)
{
- m_viewport->handleFlickableMouseMove(position, eventTimestampMillis);
+ m_viewportItem->handleFlickableMouseMove(position, eventTimestampMillis);
m_lastPinchCenterInViewportCoordinates = position;
}
void QtViewportInteractionEngine::panGestureEnded(const QPointF& position, qint64 eventTimestampMillis)
{
- m_viewport->handleFlickableMouseRelease(position, eventTimestampMillis);
+ m_viewportItem->handleFlickableMouseRelease(position, eventTimestampMillis);
m_lastPinchCenterInViewportCoordinates = position;
}
@@ -528,7 +528,7 @@
// back inside valid bounds.
// When the pinch gesture ends, the content is positioned and scaled
// back to valid boundaries.
- m_viewport->cancelFlick();
+ m_viewportItem->cancelFlick();
}
bool QtViewportInteractionEngine::scaleAnimationActive() const
@@ -546,7 +546,7 @@
// pan gesture, the animation is stopped and the content is
// immediately positioned back to valid boundaries.
- m_viewport->cancelFlick();
+ m_viewportItem->cancelFlick();
ViewportUpdateDeferrer guard(this);
setItemRectVisible(nearestValidBounds());
}
@@ -576,7 +576,7 @@
m_scaleUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent));
m_lastPinchCenterInViewportCoordinates = pinchCenterInViewportCoordinates;
- m_pinchStartScale = m_content->contentsScale();
+ m_pinchStartScale = m_pageItem->contentsScale();
}
void QtViewportInteractionEngine::pinchGestureRequestUpdate(const QPointF& pinchCenterInViewportCoordinates, qreal totalScaleFactor)
@@ -593,12 +593,12 @@
// Allow zooming out beyond mimimum scale on pages that do not explicitly disallow it.
const qreal targetCSSScale = outerBoundedCSSScale(cssScale);
- scaleContent(m_viewport->mapToWebContent(pinchCenterInViewportCoordinates), targetCSSScale);
+ scaleContent(m_viewportItem->mapToWebContent(pinchCenterInViewportCoordinates), targetCSSScale);
const QPointF positionDiff = pinchCenterInViewportCoordinates - m_lastPinchCenterInViewportCoordinates;
m_lastPinchCenterInViewportCoordinates = pinchCenterInViewportCoordinates;
- m_viewport->setContentPos(m_viewport->contentPos() - positionDiff);
+ m_viewportItem->setContentPos(m_viewportItem->contentPos() - positionDiff);
}
void QtViewportInteractionEngine::pinchGestureEnded()
@@ -637,11 +637,11 @@
void QtViewportInteractionEngine::scaleContent(const QPointF& centerInCSSCoordinates, qreal cssScale)
{
- QPointF oldPinchCenterOnViewport = m_viewport->mapFromWebContent(centerInCSSCoordinates);
- m_content->setContentsScale(itemScaleFromCSS(cssScale));
- QPointF newPinchCenterOnViewport = m_viewport->mapFromWebContent(centerInCSSCoordinates);
+ QPointF oldPinchCenterOnViewport = m_viewportItem->mapFromWebContent(centerInCSSCoordinates);
+ m_pageItem->setContentsScale(itemScaleFromCSS(cssScale));
+ QPointF newPinchCenterOnViewport = m_viewportItem->mapFromWebContent(centerInCSSCoordinates);
- m_viewport->setContentPos(m_viewport->contentPos() + (newPinchCenterOnViewport - oldPinchCenterOnViewport));
+ m_viewportItem->setContentPos(m_viewportItem->contentPos() + (newPinchCenterOnViewport - oldPinchCenterOnViewport));
}
} // namespace WebKit