diff options
author | Samuel Rødal <sroedal@trolltech.com> | 2010-03-11 14:21:43 (GMT) |
---|---|---|
committer | Samuel Rødal <sroedal@trolltech.com> | 2010-03-11 17:14:19 (GMT) |
commit | 4fc638c0b4562f4b1e9c9a367535e4b570602942 (patch) | |
tree | 4ec5b4b31db69397be8ea3c0ea4cce382d7d809b | |
parent | 65f5cecdd0343d816d9abb8342bd8b2faecdf3b8 (diff) | |
download | Qt-4fc638c0b4562f4b1e9c9a367535e4b570602942.zip Qt-4fc638c0b4562f4b1e9c9a367535e4b570602942.tar.gz Qt-4fc638c0b4562f4b1e9c9a367535e4b570602942.tar.bz2 |
Fixed bug in QTransform::type() after using operator/ or operator*.
The m_dirty variable is not a bit flag any more. This caused the switch
in QTransform::type() to not match any of the transformation types, and
m_type was left at TxNone.
Task-number: QTBUG-8557
Reviewed-by: Gunnar Sletta
-rw-r--r-- | src/gui/painting/qtransform.h | 7 | ||||
-rw-r--r-- | tests/auto/qtransform/tst_qtransform.cpp | 5 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/gui/painting/qtransform.h b/src/gui/painting/qtransform.h index 9909643..212a582 100644 --- a/src/gui/painting/qtransform.h +++ b/src/gui/painting/qtransform.h @@ -293,7 +293,8 @@ inline QTransform &QTransform::operator*=(qreal num) affine._dx *= num; affine._dy *= num; m_33 *= num; - m_dirty |= TxScale; + if (m_dirty < TxScale) + m_dirty = TxScale; return *this; } inline QTransform &QTransform::operator/=(qreal div) @@ -316,7 +317,7 @@ inline QTransform &QTransform::operator+=(qreal num) affine._dx += num; affine._dy += num; m_33 += num; - m_dirty |= TxProject; + m_dirty = TxProject; return *this; } inline QTransform &QTransform::operator-=(qreal num) @@ -332,7 +333,7 @@ inline QTransform &QTransform::operator-=(qreal num) affine._dx -= num; affine._dy -= num; m_33 -= num; - m_dirty |= TxProject; + m_dirty = TxProject; return *this; } diff --git a/tests/auto/qtransform/tst_qtransform.cpp b/tests/auto/qtransform/tst_qtransform.cpp index 827a486..a3ded8e 100644 --- a/tests/auto/qtransform/tst_qtransform.cpp +++ b/tests/auto/qtransform/tst_qtransform.cpp @@ -610,6 +610,11 @@ void tst_QTransform::types() m4.rotate(45); QCOMPARE(m4.type(), QTransform::TxRotate); + + QTransform m5; + m5.scale(5, 5); + m5 = m5.adjoint() / m5.determinant(); + QCOMPARE(m5.type(), QTransform::TxScale); } |