user32: WM_SETFONT on button doesn't repaint directly.

This commit is contained in:
Clinton Stimpson 2007-02-06 11:10:15 -07:00 committed by Alexandre Julliard
parent a06821765a
commit f3bcc0c4f8
2 changed files with 17 additions and 1 deletions

View File

@ -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:

View File

@ -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);
}