summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2009-06-22 02:49:54 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2009-06-22 02:49:54 (GMT)
commit329897ea89f0cc01e95873cc0f7722588ab3e817 (patch)
tree97fb0c6087041db733eb3bf1736838d0cc4528b3 /src
parent30b9cf0ff65bca3dbfddbd74cb21ec3eb68cbd88 (diff)
downloadQt-329897ea89f0cc01e95873cc0f7722588ab3e817.zip
Qt-329897ea89f0cc01e95873cc0f7722588ab3e817.tar.gz
Qt-329897ea89f0cc01e95873cc0f7722588ab3e817.tar.bz2
Fix Item scale + rotation on GraphicsView.
Diffstat (limited to 'src')
-rw-r--r--src/declarative/canvas/qsimplecanvasitem.cpp11
-rw-r--r--src/declarative/canvas/qsimplecanvasitem_p.h6
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