diff options
author | Andreas Kling <andreas.kling@nokia.com> | 2010-09-25 17:23:12 (GMT) |
---|---|---|
committer | Andreas Kling <andreas.kling@nokia.com> | 2010-09-26 14:29:27 (GMT) |
commit | bcb4dbebe2f6216842ce443bfc6d126943020a35 (patch) | |
tree | ad236dfb3f01ef7e844b36358511f7afb0021659 | |
parent | 23e03ee30dcd140a51073a0dd665bd871927d05e (diff) | |
download | Qt-bcb4dbebe2f6216842ce443bfc6d126943020a35.zip Qt-bcb4dbebe2f6216842ce443bfc6d126943020a35.tar.gz Qt-bcb4dbebe2f6216842ce443bfc6d126943020a35.tar.bz2 |
Fix QPainter::clipBoundingRect() for QRectF clip.
clipBoundingRect() wasn't handling QPainterClipInfo::RectFClip
properly, mistaking it for PathClip.
Reviewed-by: Samuel Rødal
-rw-r--r-- | src/gui/painting/qpainter.cpp | 2 | ||||
-rw-r--r-- | tests/auto/qpainter/tst_qpainter.cpp | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 8f54a2e..35a74c9 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -2737,6 +2737,8 @@ QRectF QPainter::clipBoundingRect() const if (info.clipType == QPainterClipInfo::RectClip) r = info.rect; + else if (info.clipType == QPainterClipInfo::RectFClip) + r = info.rectf; else if (info.clipType == QPainterClipInfo::RegionClip) r = info.region.boundingRect(); else diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index 9b8444c..ae97285 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -4543,6 +4543,14 @@ void tst_QPainter::clipBoundingRect() QVERIFY(p.clipBoundingRect().contains(QRect(120, 120, 20, 20))); QVERIFY(!p.clipBoundingRect().contains(QRectF(100, 100, 200, 100))); + // Test a basic float rectangle + p.setClipRect(QRectF(100, 100, 200, 100)); + QVERIFY(p.clipBoundingRect().contains(QRectF(100, 100, 200, 100))); + QVERIFY(!p.clipBoundingRect().contains(QRectF(50, 50, 300, 200))); + p.setClipRect(QRectF(120, 120, 20, 20), Qt::IntersectClip); + QVERIFY(p.clipBoundingRect().contains(QRect(120, 120, 20, 20))); + QVERIFY(!p.clipBoundingRect().contains(QRectF(100, 100, 200, 100))); + // Test a basic path + region QPainterPath path; path.addRect(100, 100, 200, 100); |