[PATCH] comctl32/toolbar: Fix TB_SETDRAWTEXTFLAGS handler

Nikolay Sivov nsivov at codeweavers.com
Wed Jan 25 13:50:54 CST 2017


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 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 f2f7924411..a8bcd40238 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 0c545a286f..784745c7e4 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:
-- 
2.11.0




More information about the wine-patches mailing list