From a058c72b0a5a5c6ca08f11a68ef663772597ff63 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 23 Apr 2019 12:20:47 +0300 Subject: [PATCH] comctl32/button: Improve repainting on WM_SETFOCUS. Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/comctl32/button.c | 7 ++++++- dlls/comctl32/tests/button.c | 3 +-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dlls/comctl32/button.c b/dlls/comctl32/button.c index 0a8bdf17139..0078bd0fc61 100644 --- a/dlls/comctl32/button.c +++ b/dlls/comctl32/button.c @@ -815,7 +815,12 @@ static LRESULT CALLBACK BUTTON_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, L case WM_SETFOCUS: TRACE("WM_SETFOCUS %p\n",hWnd); infoPtr->state |= BST_FOCUS; - paint_button( infoPtr, btn_type, ODA_FOCUS ); + + if (btn_type == BS_OWNERDRAW) + paint_button( infoPtr, btn_type, ODA_FOCUS ); + else + InvalidateRect(hWnd, NULL, FALSE); + if (style & BS_NOTIFY) BUTTON_NOTIFY_PARENT(hWnd, BN_SETFOCUS); break; diff --git a/dlls/comctl32/tests/button.c b/dlls/comctl32/tests/button.c index e7789dc29a2..dd05a98d2dd 100644 --- a/dlls/comctl32/tests/button.c +++ b/dlls/comctl32/tests/button.c @@ -782,12 +782,11 @@ static void test_button_messages(void) set_test_cd_ret(CDRF_DODEFAULT); set_test_cd_state(CDIS_FOCUS); - todo = button[i].style != BS_OWNERDRAW; ok(GetFocus() == 0, "expected focus 0, got %p\n", GetFocus()); SetFocus(hwnd); SendMessageA(hwnd, WM_APP, 0, 0); /* place a separator mark here */ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg); - ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].setfocus, "SetFocus(hwnd) on a button", todo); + ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].setfocus, "SetFocus(hwnd) on a button", FALSE); check_cd_seq(cd_setfocus_type, "SetFocus(hwnd)"); set_test_cd_state(0);