<!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&nbsp;this down. Looks like you've found the problem. 
QSharedDoubleBuffer used to be&nbsp;broken so some widgets were&nbsp;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>&nbsp;</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)&nbsp;:</DIV>
  <DIV>/*!<BR>&nbsp;&nbsp;&nbsp; Handles paint events for buttons. Small and 
  typically complex<BR>&nbsp;&nbsp;&nbsp; buttons are painted double-buffered to 
  reduce flicker. The<BR>&nbsp;&nbsp;&nbsp; actually drawing is done in the 
  virtual functions drawButton() and<BR>&nbsp;&nbsp;&nbsp; 
  drawButtonLabel().</DIV>
  <DIV>&nbsp;&nbsp;&nbsp; \sa drawButton(), drawButtonLabel()<BR>*/<BR>void 
  QButton::paintEvent( QPaintEvent *)<BR>{<BR>#ifdef 
  Q_WS_WIN<BR>&nbsp;&nbsp;&nbsp; QPainter p( this );<BR>&nbsp;&nbsp;&nbsp; 
  drawButton (&amp;p);<BR>#else<BR>&nbsp;&nbsp;&nbsp; QSharedDoubleBuffer 
  buffer( this );<BR>&nbsp;&nbsp;&nbsp; drawButton( buffer.painter() 
  );<BR>#endif <BR>}</DIV>
  <DIV>&nbsp;</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>&nbsp;</DIV>
  <DIV>#ifdef Q_WS_WIN<BR>&nbsp;&nbsp;&nbsp; QPainter p( this 
  );<BR>&nbsp;&nbsp;&nbsp; p.eraseRect( this-&gt;rect() );&nbsp;&nbsp;&nbsp; 
  &lt;- added<BR>&nbsp;&nbsp;&nbsp; drawButton (&amp;p);<BR>#else<BR></DIV>
  <DIV>So I looked in qbutton.cpp from qt-x11-free-3.3.3 and found this:</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>void QButton::paintEvent( QPaintEvent *)<BR>{<BR>&nbsp;&nbsp;&nbsp; 
  QSharedDoubleBuffer buffer( this );<BR>&nbsp;&nbsp;&nbsp; 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>&nbsp;</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>