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
(cherry picked from commit b4eece7cc6)
v3.5.13-sru
Timothy Pearson 13 years ago committed by Slávek Banko
parent 8f2ce2b619
commit d0c6decc22

@ -746,6 +746,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