[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [calligra/calligra-qt5-rempt] components: components: Improve view positioning after zoom timeout in
From:       Arjen Hiemstra <ahiemstra () heimr ! nl>
Date:       2013-11-21 17:44:22
Message-ID: E1VjYIg-00072g-TC () scm ! kde ! org
[Download RAW message or body]

Git commit 349c471f1cb72d08864c7d0d747a5dbf11cea00e by Arjen Hiemstra.
Committed on 21/11/2013 at 17:41.
Pushed by ahiemstra into branch 'calligra-qt5-rempt'.

components: Improve view positioning after zoom timeout in ViewController

M  +8    -2    components/ViewController.cpp

http://commits.kde.org/calligra/349c471f1cb72d08864c7d0d747a5dbf11cea00e

diff --git a/components/ViewController.cpp b/components/ViewController.cpp
index b46c35c..e0a2423 100644
--- a/components/ViewController.cpp
+++ b/components/ViewController.cpp
@@ -70,6 +70,9 @@ public:
     bool ignoreOffsetChange;
     bool ignoreFlickableChange;
 
+    float newX;
+    float newY;
+
     float minimumZoom;
     bool minimumZoomFitsWidth;
     float zoom;
@@ -322,6 +325,9 @@ QSGNode* ViewController::updatePaintNode(QSGNode* node, QQuickItem::UpdatePaintN
     float left = -newWidth * (d->zoomCenter.x() / newWidth);
     float top = -newHeight * (d->zoomCenter.y() / newHeight);
 
+    d->newX = -left;
+    d->newY = -top;
+
     centerToView.translate(left, top);
     center->setMatrix(centerToView);
 
@@ -419,10 +425,10 @@ void ViewController::zoomTimeout()
     float oldX = d->flickable->property("contentX").toReal();
     float oldY = d->flickable->property("contentY").toReal();
 
-    float xoff = (d->zoomCenter.x() + oldX) * newZoom / d->zoom;
+    float xoff = (d->zoomCenter.x() + oldX) * (1.0 + d->zoomChange);
     d->flickable->setProperty("contentX", xoff - d->zoomCenter.x());
 
-    qreal yoff = (d->zoomCenter.y() + oldY ) * newZoom / d->zoom;
+    float yoff = (d->zoomCenter.y() + oldY ) * (1.0 + d->zoomChange);
     d->flickable->setProperty("contentY", yoff - d->zoomCenter.y());
 
     QMetaObject::invokeMethod(d->flickable, "returnToBounds");

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic