diff options
author | Richard Moe Gustavsen <richard.gustavsen@nokia.com> | 2009-11-04 14:37:18 (GMT) |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@nokia.com> | 2009-11-04 14:38:54 (GMT) |
commit | 673973acc20ce4e068d63fa5b0391f5c785be8a3 (patch) | |
tree | 9b2f1cf075c768c6b00492c24d982c1ad03ff2a1 /examples/gestures/imagegestures/imagewidget.cpp | |
parent | 126638922389ca967c1a82b6254de8ac00042158 (diff) | |
download | Qt-673973acc20ce4e068d63fa5b0391f5c785be8a3.zip Qt-673973acc20ce4e068d63fa5b0391f5c785be8a3.tar.gz Qt-673973acc20ce4e068d63fa5b0391f5c785be8a3.tar.bz2 |
Mac: pinch gesture scales to fast and event below zero
Make the math correct.
Plus, update the imagegesture example.
Rev-By: denis
Diffstat (limited to 'examples/gestures/imagegestures/imagewidget.cpp')
-rw-r--r-- | examples/gestures/imagegestures/imagewidget.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/examples/gestures/imagegestures/imagewidget.cpp b/examples/gestures/imagegestures/imagewidget.cpp index f615129..df8f56d 100644 --- a/examples/gestures/imagegestures/imagewidget.cpp +++ b/examples/gestures/imagegestures/imagewidget.cpp @@ -50,7 +50,8 @@ ImageWidget::ImageWidget(QWidget *parent) horizontalOffset(0), verticalOffset(0), rotationAngle(0), - scaleFactor(1) + scaleFactor(1), + currentStepScaleFactor(1) { setMinimumSize(QSize(100,100)); @@ -85,7 +86,7 @@ void ImageWidget::paintEvent(QPaintEvent*) p.translate(ww/2, wh/2); p.translate(horizontalOffset, verticalOffset); p.rotate(rotationAngle); - p.scale(scaleFactor, scaleFactor); + p.scale(currentStepScaleFactor * scaleFactor, currentStepScaleFactor * scaleFactor); p.translate(-iw/2, -ih/2); p.drawImage(0, 0, currentImage); } @@ -140,8 +141,12 @@ void ImageWidget::pinchTriggered(QPinchGesture *gesture) } if (changeFlags & QPinchGesture::ScaleFactorChanged) { qreal value = gesture->property("scaleFactor").toReal(); - qreal lastValue = gesture->property("lastScaleFactor").toReal(); - scaleFactor += value - lastValue; + if (gesture->state() == Qt::GestureFinished) { + scaleFactor *= currentStepScaleFactor; + currentStepScaleFactor = 1; + } else { + currentStepScaleFactor = value; + } } update(); } |