From 329897ea89f0cc01e95873cc0f7722588ab3e817 Mon Sep 17 00:00:00 2001
From: Michael Brasser <michael.brasser@nokia.com>
Date: Mon, 22 Jun 2009 12:49:54 +1000
Subject: Fix Item scale + rotation on GraphicsView.

---
 src/declarative/canvas/qsimplecanvasitem.cpp | 11 ++++++++++-
 src/declarative/canvas/qsimplecanvasitem_p.h |  6 +++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/declarative/canvas/qsimplecanvasitem.cpp b/src/declarative/canvas/qsimplecanvasitem.cpp
index cbdc324..0ceb7b7 100644
--- a/src/declarative/canvas/qsimplecanvasitem.cpp
+++ b/src/declarative/canvas/qsimplecanvasitem.cpp
@@ -1027,7 +1027,16 @@ void QSimpleCanvasItem::setTransform(const QSimpleCanvas::Matrix &m)
     Q_D(QSimpleCanvasItem);
     if (d->graphicsItem) {
         d->graphicsItem->transform = QSimpleCanvasConfig::matrixToTransform(m);
-        d->graphicsItem->setTransform(QTransform::fromScale(d->scale, d->scale) * d->graphicsItem->transform);
+        QTransform t;
+        if (d->scale != 1) {
+            QPointF to = transformOriginPoint();
+            if (to.x() != 0. || to.y() != 0.)
+                t.translate(to.x(), to.y());
+            t.scale(d->scale, d->scale);
+            if (to.x() != 0. || to.y() != 0.)
+                t.translate(-to.x(), -to.y());
+        }
+        d->graphicsItem->setTransform(t * d->graphicsItem->transform);
     } else {
         if (!d->data()->transformUser)
             d->data()->transformUser = new QSimpleCanvas::Matrix;
diff --git a/src/declarative/canvas/qsimplecanvasitem_p.h b/src/declarative/canvas/qsimplecanvasitem_p.h
index 6c21d9f..7a8f40a 100644
--- a/src/declarative/canvas/qsimplecanvasitem_p.h
+++ b/src/declarative/canvas/qsimplecanvasitem_p.h
@@ -53,8 +53,8 @@
 
 #include "qgraphicsitem.h"
 
-
 QT_BEGIN_NAMESPACE
+
 class QSimpleGraphicsItem : public QGraphicsItem
 {
 public:
@@ -265,6 +265,6 @@ public:
 Q_DECLARE_OPERATORS_FOR_FLAGS(QSimpleCanvasItemPrivate::FocusStateCheckDatas)
 Q_DECLARE_OPERATORS_FOR_FLAGS(QSimpleCanvasItemPrivate::FocusStateCheckRDatas)
 
-#endif // QSIMPLECANVASITEM_P_H
-
 QT_END_NAMESPACE
+
+#endif // QSIMPLECANVASITEM_P_H
-- 
cgit v0.12