From 8d54f582776d590b236e288f9ef8085bb221ccab Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 23 Jul 2009 19:44:13 +0900 Subject: [PATCH] user32: Draw the whole button only if requested. --- dlls/user32/button.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dlls/user32/button.c b/dlls/user32/button.c index a61a4e7b902..1681949172f 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);