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