diff options
Diffstat (limited to 'src/declarative/canvas/qsimplecanvasitem.cpp')
-rw-r--r-- | src/declarative/canvas/qsimplecanvasitem.cpp | 11 |
1 files changed, 10 insertions, 1 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; |