Dmitry Timoshkov : user32: Draw the whole button only if requested.

Alexandre Julliard julliard at winehq.org
Thu Jul 23 10:01:07 CDT 2009


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

Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date:   Thu Jul 23 19:44:13 2009 +0900

user32: Draw the whole button only if requested.

---

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

diff --git a/dlls/user32/button.c b/dlls/user32/button.c
index a61a4e7..1681949 100644
--- a/dlls/user32/button.c
+++ b/dlls/user32/button.c
@@ -826,6 +826,9 @@ static void PB_Paint( HWND hwnd, HDC hDC, UINT action )
     hOldBrush = SelectObject(hDC,GetSysColorBrush(COLOR_BTNFACE));
     oldBkMode = SetBkMode(hDC, TRANSPARENT);
 
+    /* completely skip the drawing if only focus has changed */
+    if (action == ODA_FOCUS) goto draw_focus;
+
     if (get_button_type(style) == BS_DEFPUSHBUTTON)
     {
         Rectangle(hDC, rc.left, rc.top, rc.right, rc.bottom);
@@ -869,7 +872,9 @@ static void PB_Paint( HWND hwnd, HDC hDC, UINT action )
 
     SetTextColor( hDC, oldTxtColor );
 
-    if (state & BUTTON_HASFOCUS)
+draw_focus:
+    if ((action == ODA_FOCUS) ||
+        ((action == ODA_DRAWENTIRE) && (state & BUTTON_HASFOCUS)))
     {
         InflateRect( &focus_rect, -1, -1 );
         IntersectRect(&focus_rect, &focus_rect, &rc);




More information about the wine-cvs mailing list