[Bug 36694] New: Using PBM_SETPOS to change the position of a progress bar to what it was before after a style change (for instance, leaving marquee mode) does not redraw the progress bar
wine-bugs at winehq.org
wine-bugs at winehq.org
Sat Jun 7 16:20:25 CDT 2014
http://bugs.winehq.org/show_bug.cgi?id=36694
Bug ID: 36694
Summary: Using PBM_SETPOS to change the position of a progress
bar to what it was before after a style change (for
instance, leaving marquee mode) does not redraw the
progress bar
Product: Wine
Version: 1.7.19
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: comctl32
Assignee: wine-bugs at winehq.org
Reporter: pietro10 at mac.com
Created attachment 48733
--> http://bugs.winehq.org/attachment.cgi?id=48733
The test program that can be used to duplicate this behavior.
If you do this when you switch out of marquee mode on a progress bar:
SendMessage(pbar, PBM_SETMARQUEE, FALSE, 0);
SetWindowLongPtr(pbar, GWL_STYLE, GetWindowLongPtr(hwnd, GWL_STYLE) &
~PBS_MARQUEE);
SendMessage(pbar, PBM_SETPOS, currentPos, 0);
the progress bar will not redraw, and thus will continue to show the marquee
animation frozen at the place it was at the time of the above call.
Attached is a sample program that will demonstrate this behavior. Set one
value, then click Marquee and Set again. On Windows XP (at least), the progress
bar will redraw properly with the second click of Set. The attached file is
also available at
https://github.com/andlabs/misctestprogs/blob/master/winprogresstest.c.
(As marquees are a comctl32 version 6 feature, you may need a manifest file.)
Looking at the soruce, I see here -
http://source.winehq.org/source/dlls/comctl32/progress.c#L639 - that the
implementation's handling of PBM_SETPOS only draws the progressbar if the new
position is different. Thus, I could come up with a variety of ways to fix it,
such as adding a style change check there, or always redrawing the progress
bar, or redrawing on a style change... but I don't know which is the most
correct, so I'll leave it to the experts.
Thanks.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list