[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