From f3bcc0c4f80e62e62b3f72367bda062bd11e258d Mon Sep 17 00:00:00 2001 From: Clinton Stimpson Date: Tue, 6 Feb 2007 11:10:15 -0700 Subject: [PATCH] user32: WM_SETFONT on button doesn't repaint directly. --- dlls/user32/button.c | 2 +- dlls/user32/tests/msg.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/dlls/user32/button.c b/dlls/user32/button.c index 87fa5907c5b..b7b75fc7e33 100644 --- a/dlls/user32/button.c +++ b/dlls/user32/button.c @@ -410,7 +410,7 @@ static LRESULT WINAPI ButtonWndProc_common(HWND hWnd, UINT uMsg, case WM_SETFONT: set_button_font( hWnd, (HFONT)wParam ); - if (lParam) paint_button( hWnd, btn_type, ODA_DRAWENTIRE ); + if (lParam) InvalidateRect(hWnd, NULL, TRUE); break; case WM_GETFONT: diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 8a21146e7f2..0ebde395c1d 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -4229,6 +4229,14 @@ static const struct message WmLButtonUpSeq[] = { WM_CAPTURECHANGED, sent|wparam|defwinproc, 0 }, { 0 } }; +static const struct message WmSetFontButtonSeq[] = +{ + { WM_SETFONT, sent }, + { WM_PAINT, sent }, + { WM_ERASEBKGND, sent|defwinproc }, + { WM_CTLCOLORBTN, sent|defwinproc }, + { 0 } +}; static WNDPROC old_button_proc; @@ -4309,6 +4317,7 @@ static void test_button_messages(void) unsigned int i; HWND hwnd; DWORD dlg_code; + HFONT zfont; subclass_button(); @@ -4348,6 +4357,13 @@ static void test_button_messages(void) SendMessageA(hwnd, WM_LBUTTONUP, 0, 0); ok_sequence(WmLButtonUpSeq, "WM_LBUTTONUP on a button", FALSE); + + flush_sequence(); + zfont = (HFONT)GetStockObject(SYSTEM_FONT); + SendMessageA(hwnd, WM_SETFONT, (WPARAM)zfont, TRUE); + UpdateWindow(hwnd); + ok_sequence(WmSetFontButtonSeq, "WM_SETFONT on a button", FALSE); + DestroyWindow(hwnd); }