From 46ed43afaf9a95192f4860b666594d57f4f275ea Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 22 Dec 2009 17:37:52 +1000 Subject: Move the viewport by whole pixels to avoid painting artifacts. --- src/declarative/graphicsitems/qmlgraphicsflickable.cpp | 14 +++++++++++++- src/declarative/graphicsitems/qmlgraphicsflickable_p_p.h | 7 +++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/declarative/graphicsitems/qmlgraphicsflickable.cpp b/src/declarative/graphicsitems/qmlgraphicsflickable.cpp index ed70b14..ba17115 100644 --- a/src/declarative/graphicsitems/qmlgraphicsflickable.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsflickable.cpp @@ -152,7 +152,9 @@ void QmlGraphicsFlickableVisibleArea::updateVisible() QmlGraphicsFlickablePrivate::QmlGraphicsFlickablePrivate() - : viewport(new QmlGraphicsItem), _moveX(viewport, &QmlGraphicsItem::setX), _moveY(viewport, &QmlGraphicsItem::setY) + : viewport(new QmlGraphicsItem) + , _moveX(this, &QmlGraphicsFlickablePrivate::setRoundedViewportX) + , _moveY(this, &QmlGraphicsFlickablePrivate::setRoundedViewportY) , vWidth(-1), vHeight(-1), overShoot(true), flicked(false), moving(false), stealMouse(false) , pressed(false), atXEnd(false), atXBeginning(true), atYEnd(false), atYBeginning(true) , interactive(true), deceleration(500), maxVelocity(2000), reportedVelocitySmoothing(100) @@ -828,6 +830,16 @@ void QmlGraphicsFlickablePrivate::clearDelayedPress() } } +void QmlGraphicsFlickablePrivate::setRoundedViewportX(qreal x) +{ + viewport->setX(qRound(x)); +} + +void QmlGraphicsFlickablePrivate::setRoundedViewportY(qreal y) +{ + viewport->setY(qRound(y)); +} + void QmlGraphicsFlickable::timerEvent(QTimerEvent *event) { Q_D(QmlGraphicsFlickable); diff --git a/src/declarative/graphicsitems/qmlgraphicsflickable_p_p.h b/src/declarative/graphicsitems/qmlgraphicsflickable_p_p.h index b19a08c..d59a9e4 100644 --- a/src/declarative/graphicsitems/qmlgraphicsflickable_p_p.h +++ b/src/declarative/graphicsitems/qmlgraphicsflickable_p_p.h @@ -82,10 +82,13 @@ public: void captureDelayedPress(QGraphicsSceneMouseEvent *event); void clearDelayedPress(); + void setRoundedViewportX(qreal x); + void setRoundedViewportY(qreal y); + public: QmlGraphicsItem *viewport; - QmlTimeLineValueProxy _moveX; - QmlTimeLineValueProxy _moveY; + QmlTimeLineValueProxy _moveX; + QmlTimeLineValueProxy _moveY; QmlTimeLine timeline; qreal vWidth; qreal vHeight; -- cgit v0.12