Module: wine Branch: master Commit: 970029bb9ba33928bb20c5e397d47f023e4a6501 URL: http://source.winehq.org/git/wine.git/?a=commit;h=970029bb9ba33928bb20c5e397...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Jan 25 22:50:54 2017 +0300
comctl32/toolbar: Fix TB_SETDRAWTEXTFLAGS handler.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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: