Dmitry Timoshkov : user32: Do not ask DrawFrameControl() to modify the passed in rectangle.

Alexandre Julliard julliard at winehq.org
Fri Apr 16 10:56:03 CDT 2010


Module: wine
Branch: master
Commit: c049f833082bf57f8364d433a3fa41b6756441c5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c049f833082bf57f8364d433a3fa41b6756441c5

Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date:   Fri Apr 16 18:59:24 2010 +0900

user32: Do not ask DrawFrameControl() to modify the passed in rectangle.

This patch should fix the regression(s) caused by my recent button painting
patches. The problem was that DrawFrameControl() was modifying the rectangle,
and one of my patches stopped calling DrawFrameControl() in case of ODA_FOCUS
action, so drawing an entire button and only focus started to differ, which
was hidden by the custom clipping (that was removed by my last patch).

---

 dlls/user32/button.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/dlls/user32/button.c b/dlls/user32/button.c
index eacacbb..0aefe1b 100644
--- a/dlls/user32/button.c
+++ b/dlls/user32/button.c
@@ -769,7 +769,7 @@ static void BUTTON_DrawLabel(HWND hwnd, HDC hdc, UINT dtFlags, const RECT *rc)
  */
 static void PB_Paint( HWND hwnd, HDC hDC, UINT action )
 {
-    RECT     rc, focus_rect, r;
+    RECT     rc, r;
     UINT     dtFlags, uState;
     HPEN     hOldPen;
     HBRUSH   hOldBrush;
@@ -802,12 +802,10 @@ static void PB_Paint( HWND hwnd, HDC hDC, UINT action )
 	InflateRect( &rc, -1, -1 );
     }
 
-    focus_rect = rc;
-
     /* completely skip the drawing if only focus has changed */
     if (action == ODA_FOCUS) goto draw_focus;
 
-    uState = DFCS_BUTTONPUSH | DFCS_ADJUSTRECT;
+    uState = DFCS_BUTTONPUSH;
 
     if (style & BS_FLAT)
         uState |= DFCS_MONO;
@@ -844,8 +842,8 @@ draw_focus:
     if ((action == ODA_FOCUS) ||
         ((action == ODA_DRAWENTIRE) && (state & BUTTON_HASFOCUS)))
     {
-        InflateRect( &focus_rect, -1, -1 );
-        DrawFocusRect( hDC, &focus_rect );
+        InflateRect( &rc, -2, -2 );
+        DrawFocusRect( hDC, &rc );
     }
 
  cleanup:




More information about the wine-cvs mailing list