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.
http://bugs.winehq.org/show_bug.cgi?id=17886
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
--- Comment #1 from Austin English austinenglish@gmail.com 2009-03-29 14:30:16 --- Can you add a testcase? Please submit patches to wine-patches@winehq.org, they aren't picked up here.
http://bugs.winehq.org/show_bug.cgi?id=17886
--- Comment #2 from Aled Hughes winehq@aledhughes.co.uk 2009-03-29 16:24:42 --- Created an attachment (id=20193) --> (http://bugs.winehq.org/attachment.cgi?id=20193) Test program for flickering toolbar
Added source for basic win32 app that creates a toolbar and issues a TB_HIDEBUTTON message on WM_MOUSEMOVE. On my system, this makes the toolbar flicker like crazy (may not be so noticeable on newer gfx cards).
http://bugs.winehq.org/show_bug.cgi?id=17886
--- Comment #3 from Nikolay Sivov bunglehead@gmail.com 2009-04-04 03:45:48 ---
Created an attachment (id=20190)
--> (http://bugs.winehq.org/attachment.cgi?id=20190) [details]
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.
You're right I think. Checking with ControlSpy in Windows shows that subsequent TB_HIDEBUTTON doesn't produce any drawing messages.
(In reply to comment #2)
Created an attachment (id=20193)
--> (http://bugs.winehq.org/attachment.cgi?id=20193) [details]
Test program for flickering toolbar
Added source for basic win32 app that creates a toolbar and issues a TB_HIDEBUTTON message on WM_MOUSEMOVE. On my system, this makes the toolbar flicker like crazy (may not be so noticeable on newer gfx cards).
We need to add messaging sequence testing in toolbar test suite for that - it's not present yet. Probably I could do it this weekend.
http://bugs.winehq.org/show_bug.cgi?id=17886
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |bunglehead@gmail.com Resolution| |FIXED
--- Comment #4 from Nikolay Sivov bunglehead@gmail.com 2009-08-03 11:26:09 --- Fixed by commit:
http://source.winehq.org/git/wine.git/?a=commit;h=85abd4c3cfdc21dd614b00bc02...
http://bugs.winehq.org/show_bug.cgi?id=17886
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Alexandre Julliard julliard@winehq.org 2009-08-07 12:42:07 --- Closing bugs fixed in 1.1.27.