<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2523" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=768165808-17122004></SPAN><FONT size=2><FONT
face=Arial><FONT color=#0000ff><SPAN class=768165808-17122004>Thanks for
tracking this down. Looks like you've found the problem.
QSharedDoubleBuffer used to be broken so some widgets were changed so
they didn't use it on Windows. Now it is fixed we should revert to using
it.</SPAN></FONT></FONT></FONT></DIV>
<DIV><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN
class=768165808-17122004></SPAN></FONT></FONT></FONT> </DIV>
<DIV><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN
class=768165808-17122004>Cheers,</SPAN></FONT></FONT></FONT></DIV>
<DIV><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN
class=768165808-17122004>Chris</SPAN></FONT></FONT></FONT></DIV>
<DIV dir=ltr align=left><BR></DIV>
<BLOCKQUOTE
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV></DIV>
<DIV>Hi,</DIV>
<DIV>I spent lots of time tracing execution with the debuger, and I didn't
find a place in *win.cpp code which seems to be responsible. The point of my
interest is now qbutton.cpp, in paintEvent function (line 880) :</DIV>
<DIV>/*!<BR> Handles paint events for buttons. Small and
typically complex<BR> buttons are painted double-buffered to
reduce flicker. The<BR> actually drawing is done in the
virtual functions drawButton() and<BR>
drawButtonLabel().</DIV>
<DIV> \sa drawButton(), drawButtonLabel()<BR>*/<BR>void
QButton::paintEvent( QPaintEvent *)<BR>{<BR>#ifdef
Q_WS_WIN<BR> QPainter p( this );<BR>
drawButton (&p);<BR>#else<BR> QSharedDoubleBuffer
buffer( this );<BR> drawButton( buffer.painter()
);<BR>#endif <BR>}</DIV>
<DIV> </DIV>
<DIV>I tried to change the #ifdef in order to use the double buffering as the
comments suggest, and... it works! In fact, clearing the QPainter is missing,
the following code works too:</DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV>#ifdef Q_WS_WIN<BR> QPainter p( this
);<BR> p.eraseRect( this->rect() );
<- added<BR> drawButton (&p);<BR>#else<BR></DIV>
<DIV>So I looked in qbutton.cpp from qt-x11-free-3.3.3 and found this:</DIV>
<DIV> </DIV>
<DIV>void QButton::paintEvent( QPaintEvent *)<BR>{<BR>
QSharedDoubleBuffer buffer( this );<BR> drawButton(
buffer.painter() );<BR>}<BR></DIV>
<DIV>So I am wondering where does this #ifdef Q_WS_WIN comes from ? What do
you think about using the double buffer which is what is used in last Qt X11
release ?</DIV>
<DIV> </DIV>
<DIV>Regards.</DIV><BR><BR>
<DIV>
<DIV>
<DIV>Aurelien REGAT-BARREL <BR></DIV></DIV></DIV>
<P>
<HR SIZE=1>
Découvrez le nouveau Yahoo! Mail : <FONT color=red>250 Mo d'espace</FONT> de
stockage pour vos mails !<BR><A
href="http://fr.rd.yahoo.com/mail/taglines/*http://fr.rd.yahoo.com/evt=25917/*http://fr.rd.yahoo.com/mail_fr/mail_campaigns/splash/taglines_250/default/*http://fr.promotions.yahoo.com/mail/creer28.html">Créez
votre Yahoo! Mail</A></BLOCKQUOTE></BODY></HTML>