Clinton Stimpson : user32: WM_SETFONT on button doesn't repaint directly.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Feb 6 15:23:12 CST 2007


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

Author: Clinton Stimpson <cjstimpson at utwire.net>
Date:   Tue Feb  6 11:10:15 2007 -0700

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 deletions(-)

diff --git a/dlls/user32/button.c b/dlls/user32/button.c
index 87fa590..b7b75fc 100644
--- a/dlls/user32/button.c
+++ b/dlls/user32/button.c
@@ -410,7 +410,7 @@ static LRESULT WINAPI ButtonWndProc_comm
 
     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 8a21146..0ebde39 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -4229,6 +4229,14 @@ static const struct message WmLButtonUpS
     { 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);
 }
 




More information about the wine-cvs mailing list