Progress bar painting fix
Mike McCormack
mike at codeweavers.com
Thu Jul 17 16:27:19 CDT 2003
ChangeLog:
* invalidate the whole progress bar when painting (for Dreamweaver's
install)
-------------- next part --------------
Index: dlls/comctl32/progress.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/progress.c,v
retrieving revision 1.31
diff -u -r1.31 progress.c
--- dlls/comctl32/progress.c 11 May 2003 02:38:05 -0000 1.31
+++ dlls/comctl32/progress.c 17 Jul 2003 21:25:34 -0000
@@ -62,37 +62,14 @@
*/
static void PROGRESS_Invalidate( PROGRESS_INFO *infoPtr, INT old, INT new )
{
- LONG style = GetWindowLongW (infoPtr->Self, GWL_STYLE);
RECT rect;
- int oldPos, newPos, ledWidth;
+ /*
+ * To make sure the number is painted correctly, we must invalidate
+ * the whole progress bar.
+ */
GetClientRect (infoPtr->Self, &rect);
- InflateRect(&rect, -1, -1);
-
- if (style & PBS_VERTICAL)
- {
- oldPos = rect.bottom - MulDiv (old - infoPtr->MinVal, rect.bottom - rect.top,
- infoPtr->MaxVal - infoPtr->MinVal);
- newPos = rect.bottom - MulDiv (new - infoPtr->MinVal, rect.bottom - rect.top,
- infoPtr->MaxVal - infoPtr->MinVal);
- ledWidth = MulDiv (rect.right - rect.left, 2, 3);
- rect.top = min( oldPos, newPos );
- rect.bottom = max( oldPos, newPos );
- if (!(style & PBS_SMOOTH)) rect.top -= ledWidth;
- InvalidateRect( infoPtr->Self, &rect, oldPos < newPos );
- }
- else
- {
- oldPos = rect.left + MulDiv (old - infoPtr->MinVal, rect.right - rect.left,
- infoPtr->MaxVal - infoPtr->MinVal);
- newPos = rect.left + MulDiv (new - infoPtr->MinVal, rect.right - rect.left,
- infoPtr->MaxVal - infoPtr->MinVal);
- ledWidth = MulDiv (rect.bottom - rect.top, 2, 3);
- rect.left = min( oldPos, newPos );
- rect.right = max( oldPos, newPos );
- if (!(style & PBS_SMOOTH)) rect.right += ledWidth;
- InvalidateRect( infoPtr->Self, &rect, oldPos > newPos );
- }
+ InvalidateRect( infoPtr->Self, &rect, TRUE);
}
More information about the wine-patches
mailing list