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 12 years ago
parent 9a75b154bf
commit b4eece7cc6

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

@ -414,6 +414,8 @@ typedef QPtrStack<QWMatrix> QWMatrixStack;
\value DashDotDotLine one dash, two dots, one dash, two dots. \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. \value MPenStyle mask of the pen styles.
\img pen-styles.png Pen Styles \img pen-styles.png Pen Styles

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

Loading…
Cancel
Save