Fixed clipping errors for non-extended paint engines.
authorSamuel Rødal <samuel.rodal@nokia.com>
Mon, 30 May 2011 07:38:47 +0000 (09:38 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 21 Jul 2011 08:53:26 +0000 (10:53 +0200)
Partially revert change a33ef62469fd71bec for the non-extended paint
engine path.

Task-number: QTBUG-19525
Reviewed-by: Andy Shaw
(cherry picked from commit f370dd07560c449ba17d13475721f7d3b46e6b24)

Change-Id: I19eaaa265a54b2df65a8ec73e36fbdf58b1a4334
Reviewed-on: http://codereview.qt.nokia.com/1211
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
src/gui/painting/qpainter.cpp

index 686f2f0..f7b6ab6 100644 (file)
@@ -2849,6 +2849,9 @@ void QPainter::setClipRect(const QRect &rect, Qt::ClipOperation op)
         return;
     }
 
+    if (d->state->clipOperation == Qt::NoClip && op == Qt::IntersectClip)
+        op = Qt::ReplaceClip;
+
     d->state->clipRegion = rect;
     d->state->clipOperation = op;
     if (op == Qt::NoClip || op == Qt::ReplaceClip)
@@ -2904,6 +2907,9 @@ void QPainter::setClipRegion(const QRegion &r, Qt::ClipOperation op)
         return;
     }
 
+    if (d->state->clipOperation == Qt::NoClip && op == Qt::IntersectClip)
+        op = Qt::ReplaceClip;
+
     d->state->clipRegion = r;
     d->state->clipOperation = op;
     if (op == Qt::NoClip || op == Qt::ReplaceClip)
@@ -3309,6 +3315,9 @@ void QPainter::setClipPath(const QPainterPath &path, Qt::ClipOperation op)
         return;
     }
 
+    if (d->state->clipOperation == Qt::NoClip && op == Qt::IntersectClip)
+        op = Qt::ReplaceClip;
+
     d->state->clipPath = path;
     d->state->clipOperation = op;
     if (op == Qt::NoClip || op == Qt::ReplaceClip)