Fix: don't override the new non-cosmetic default pen in qwidget
authoraavit <eirik.aavitsland@digia.com>
Tue, 23 Oct 2012 13:27:18 +0000 (15:27 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 25 Oct 2012 12:10:04 +0000 (14:10 +0200)
As QWidget initializes any painter created in paintevent handler to
have the pen color of the palette's foreground, setting it to 0 width,
i.e. cosmetic, it negated the effect of the recent change to default
1-width non-cosmetic, ref. I04d910e9700baf7f13a8aac07a3633014bb9283e

This caused scaled painting with default pen on QImage and QWidget
to yield different results.

Change-Id: I930b64bf7c0a8c84b9ea3edb49adc813370fed0e
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
src/widgets/kernel/qwidget.cpp
tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp

index bb148a5..07dab9e 100644 (file)
@@ -11237,7 +11237,7 @@ void QWidget::ungrabGesture(Qt::GestureType gesture)
 void QWidget::initPainter(QPainter *painter) const
 {
     const QPalette &pal = palette();
-    painter->d_func()->state->pen = QPen(pal.brush(foregroundRole()), 0);
+    painter->d_func()->state->pen = QPen(pal.brush(foregroundRole()), 1);
     painter->d_func()->state->bgBrush = pal.brush(backgroundRole());
     QFont f(font(), const_cast<QWidget *>(this));
     painter->d_func()->state->deviceFont = f;
index 57b7d08..80de2da 100644 (file)
@@ -2508,8 +2508,8 @@ public:
 
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
     {
-        dirtyPainter = (painter->pen().width() != 0);
-        painter->setPen(QPen(Qt::black, 1.0));
+        dirtyPainter = (painter->pen().color() != Qt::black);
+        painter->setPen(Qt::red);
     }
 };