http://bugs.winehq.org/show_bug.cgi?id=17886
Summary: Toolbar flicker (TB_HIDEBUTTON always redraws) Product: Wine Version: 1.1.15 Platform: PC URL: http://www.memory-map.co.uk OS/Version: Linux Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: comctl32 AssignedTo: wine-bugs@winehq.org ReportedBy: winehq@aledhughes.co.uk
Created an attachment (id=20190) --> (http://bugs.winehq.org/attachment.cgi?id=20190) Patch to avoid redraw on TB_HIDEBUTTON and state is unchanged
A minor annoyance I found when using the Memory-Map OS navigator program is that the main toolbar continuously redraws when moving the mouse around a MDI client. This behaviour is not present when running under Windows, but has been present since pre V1.0 of WINE.
A Spy++ message trace shows that the application is sending a TB_HIDEBUTTON message on a mouse move with fShow==TRUE. On WINE this is immediately followed by a redraw (WM_ERASEBKGND, etc.) but under native Windows this redraw isn't being requested. Looking at the WINE code for comctl32.dll it seems that in the TOOLBAR_HideButton function an InvalidateRect() is always been called.
I guess that Windows itself optimises this to avoid repainting when a visibility state of the button is already set to that requested with TB_HIDEBUTTON. Doing the same under WINE (patch attached) fixes the flicker.