Nikolay Sivov : comctl32/toolbar: Fix TB_SETDRAWTEXTFLAGS handler.

Alexandre Julliard julliard at winehq.org
Thu Jan 26 14:53:13 CST 2017


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Jan 25 22:50:54 2017 +0300

comctl32/toolbar: Fix TB_SETDRAWTEXTFLAGS handler.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/comctl32/tests/toolbar.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 dlls/comctl32/toolbar.c       | 13 ++++++-------
 2 files changed, 48 insertions(+), 7 deletions(-)

diff --git a/dlls/comctl32/tests/toolbar.c b/dlls/comctl32/tests/toolbar.c
index f2f7924..a8bcd40 100644
--- a/dlls/comctl32/tests/toolbar.c
+++ b/dlls/comctl32/tests/toolbar.c
@@ -2367,6 +2367,47 @@ static void test_save(void)
     RegCloseKey( key );
 }
 
+static void test_drawtext_flags(void)
+{
+    HWND hwnd = NULL;
+    UINT flags;
+
+    rebuild_toolbar(&hwnd);
+
+    flags = SendMessageA(hwnd, TB_SETDRAWTEXTFLAGS, 0, 0);
+todo_wine
+    ok(flags == 0, "Unexpected draw text flags %#x\n", flags);
+
+    /* zero mask, flags are retained */
+    flags = SendMessageA(hwnd, TB_SETDRAWTEXTFLAGS, 0, DT_BOTTOM);
+todo_wine
+    ok(flags == 0, "Unexpected draw text flags %#x\n", flags);
+    ok(!(flags & DT_BOTTOM), "Unexpected DT_BOTTOM style\n");
+
+    flags = SendMessageA(hwnd, TB_SETDRAWTEXTFLAGS, 0, 0);
+todo_wine
+    ok(flags == 0, "Unexpected draw text flags %#x\n", flags);
+    ok(!(flags & DT_BOTTOM), "Unexpected DT_BOTTOM style\n");
+
+    /* set/remove */
+    flags = SendMessageA(hwnd, TB_SETDRAWTEXTFLAGS, DT_BOTTOM, DT_BOTTOM);
+todo_wine
+    ok(flags == 0, "Unexpected draw text flags %#x\n", flags);
+    ok(!(flags & DT_BOTTOM), "Unexpected DT_BOTTOM style\n");
+
+    flags = SendMessageA(hwnd, TB_SETDRAWTEXTFLAGS, DT_BOTTOM, 0);
+todo_wine
+    ok(flags == DT_BOTTOM, "Unexpected draw text flags %#x\n", flags);
+    ok(flags & DT_BOTTOM, "Expected DT_BOTTOM style, %#x\n", flags);
+
+    flags = SendMessageA(hwnd, TB_SETDRAWTEXTFLAGS, DT_BOTTOM, 0);
+todo_wine
+    ok(flags == 0, "Unexpected draw text flags %#x\n", flags);
+    ok(!(flags & DT_BOTTOM), "Unexpected DT_BOTTOM style\n");
+
+    DestroyWindow(hwnd);
+}
+
 START_TEST(toolbar)
 {
     WNDCLASSA wc;
@@ -2411,6 +2452,7 @@ START_TEST(toolbar)
     test_TB_GET_SET_EXTENDEDSTYLE();
     test_noresize();
     test_save();
+    test_drawtext_flags();
 
     PostQuitMessage(0);
     while(GetMessageA(&msg,0,0,0)) {
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index 0c545a2..784745c 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -4546,17 +4546,16 @@ TOOLBAR_SetDisabledImageList (TOOLBAR_INFO *infoPtr, WPARAM wParam, HIMAGELIST h
 
 
 static LRESULT
-TOOLBAR_SetDrawTextFlags (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetDrawTextFlags (TOOLBAR_INFO *infoPtr, DWORD mask, DWORD flags)
 {
-    DWORD dwTemp;
+    DWORD old_flags;
 
-    TRACE("hwnd = %p, dwMask = 0x%08x, dwDTFlags = 0x%08x\n", infoPtr->hwndSelf, (DWORD)wParam, (DWORD)lParam);
+    TRACE("hwnd = %p, mask = 0x%08x, flags = 0x%08x\n", infoPtr->hwndSelf, mask, flags);
 
-    dwTemp = infoPtr->dwDTFlags;
-    infoPtr->dwDTFlags =
-	(infoPtr->dwDTFlags & (DWORD)wParam) | (DWORD)lParam;
+    old_flags = infoPtr->dwDTFlags;
+    infoPtr->dwDTFlags = (old_flags & ~mask) | (flags & mask);
 
-    return (LRESULT)dwTemp;
+    return (LRESULT)old_flags;
 }
 
 /* This function differs a bit from what MSDN says it does:




More information about the wine-cvs mailing list