Fix TQPainter::drawWinFocusRect

This patch brings the behaviour on external paint devices in line with the documentation at http://trinitydesktop.org/docs/qt3/qpainter.html#drawWinFocusRect
pull/2/head
Timothy Pearson 13 years ago
parent 9a75b154bf
commit b4eece7cc6

@ -768,6 +768,7 @@ public:
DotLine,
DashDotLine,
DashDotDotLine,
FineDotLine,
MPenStyle = 0x0f
};

@ -414,6 +414,8 @@ typedef QPtrStack<QWMatrix> QWMatrixStack;
\value DashDotDotLine one dash, two dots, one dash, two dots.
\value FineDotLine single pixel dots separated by single pixels.
\value MPenStyle mask of the pen styles.
\img pen-styles.png Pen Styles

@ -786,6 +786,13 @@ void QPainter::updatePen()
dashes[5] = dot;
dash_len = 6;
allow_zero_lw = FALSE;
break;
case FineDotLine:
dot = 1;
dashes[0] = dot;
dashes[1] = dot;
dash_len = 2;
allow_zero_lw = FALSE;
}
Q_ASSERT( dash_len <= (int) sizeof(dashes) );
@ -1836,21 +1843,21 @@ void QPainter::drawWinFocusRect( int x, int y, int w, int h,
if ( xorPaint ) {
if ( QColor::numBitPlanes() <= 8 )
setPen( color1 );
setPen( QPen(color1, 0, Qt::FineDotLine) );
else
setPen( white );
setPen( QPen(white, 0, Qt::FineDotLine) );
setRasterOp( XorROP );
} else {
if ( qGray( bgColor.rgb() ) < 128 )
setPen( white );
setPen( QPen(white, 0, Qt::FineDotLine) );
else
setPen( black );
setPen( QPen(black, 0, Qt::FineDotLine) );
}
if ( testf(ExtDev|VxF|WxF) ) {
if ( testf(ExtDev) ) {
QPDevCmdParam param[1];
QRect r( x, y, w, h );
QRect r( x, y, w-1, h-1 );
param[0].rect = &r;
if ( !pdev->cmd( QPaintDevice::PdcDrawRect, this, param ) || !hd) {
setRasterOp( old_rop );

Loading…
Cancel
Save