Nikolay Sivov : comctl32: Fix TB_SETSTYLE behaviour and return value.
Alexandre Julliard
julliard at winehq.org
Mon Jan 9 14:24:28 CST 2012
Module: wine
Branch: master
Commit: 54b6c76720c502097cc63dad9a42fbf772ff83d4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=54b6c76720c502097cc63dad9a42fbf772ff83d4
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sat Jan 7 21:27:38 2012 +0300
comctl32: Fix TB_SETSTYLE behaviour and return value.
---
dlls/comctl32/tests/toolbar.c | 50 +++++++++++++++++++++++++++++++++++++++++
dlls/comctl32/toolbar.c | 9 +++----
2 files changed, 54 insertions(+), 5 deletions(-)
diff --git a/dlls/comctl32/tests/toolbar.c b/dlls/comctl32/tests/toolbar.c
index 8850b11..22ad75c 100644
--- a/dlls/comctl32/tests/toolbar.c
+++ b/dlls/comctl32/tests/toolbar.c
@@ -164,6 +164,7 @@ static void basic_test(void)
TBBUTTON buttons[9];
HWND hToolbar;
int i;
+
for (i=0; i<9; i++)
MakeButton(buttons+i, 1000+i, TBSTYLE_CHECKGROUP, 0);
MakeButton(buttons+3, 1003, TBSTYLE_SEP|TBSTYLE_GROUP, 0);
@@ -1633,6 +1634,54 @@ static void test_tooltip(void)
DestroyWindow(hToolbar);
}
+static void test_get_set_style(void)
+{
+ TBBUTTON buttons[9];
+ DWORD style, style2, ret;
+ HWND hToolbar;
+ int i;
+
+ for (i=0; i<9; i++)
+ MakeButton(buttons+i, 1000+i, TBSTYLE_CHECKGROUP, 0);
+ MakeButton(buttons+3, 1003, TBSTYLE_SEP|TBSTYLE_GROUP, 0);
+ MakeButton(buttons+6, 1006, TBSTYLE_SEP, 0);
+
+ hToolbar = CreateToolbarEx(hMainWnd,
+ WS_VISIBLE | WS_CLIPCHILDREN | CCS_TOP |
+ WS_CHILD | TBSTYLE_LIST,
+ 100,
+ 0, NULL, 0,
+ buttons, sizeof(buttons)/sizeof(buttons[0]),
+ 0, 0, 20, 16, sizeof(TBBUTTON));
+ ok(hToolbar != NULL, "Toolbar creation\n");
+ SendMessage(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)"test\000");
+
+ style = SendMessageA(hToolbar, TB_GETSTYLE, 0, 0);
+ style2 = GetWindowLongA(hToolbar, GWL_STYLE);
+todo_wine
+ ok(style == style2, "got 0x%08x, expected 0x%08x\n", style, style2);
+
+ /* try to alter common window bits */
+ style2 |= WS_BORDER;
+ ret = SendMessageA(hToolbar, TB_SETSTYLE, 0, style2);
+ ok(ret == 0, "got %d\n", ret);
+ style = SendMessageA(hToolbar, TB_GETSTYLE, 0, 0);
+ style2 = GetWindowLongA(hToolbar, GWL_STYLE);
+ ok((style != style2) && (style == (style2 | WS_BORDER)),
+ "got 0x%08x, expected 0x%08x\n", style, style2);
+ ok(style & WS_BORDER, "got 0x%08x\n", style);
+
+ /* now styles are the same, alter window style */
+ ret = SendMessageA(hToolbar, TB_SETSTYLE, 0, style2);
+ ok(ret == 0, "got %d\n", ret);
+ style2 |= WS_BORDER;
+ SetWindowLongA(hToolbar, GWL_STYLE, style2);
+ style = SendMessageA(hToolbar, TB_GETSTYLE, 0, 0);
+ ok(style == style2, "got 0x%08x, expected 0x%08x\n", style, style2);
+
+ DestroyWindow(hToolbar);
+}
+
START_TEST(toolbar)
{
WNDCLASSA wc;
@@ -1672,6 +1721,7 @@ START_TEST(toolbar)
test_setrows();
test_getstring();
test_tooltip();
+ test_get_set_style();
PostQuitMessage(0);
while(GetMessageA(&msg,0,0,0)) {
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index fba9bce..3868967 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -4908,11 +4908,10 @@ TOOLBAR_SetState (TOOLBAR_INFO *infoPtr, INT Id, LPARAM lParam)
static LRESULT
-TOOLBAR_SetStyle (TOOLBAR_INFO *infoPtr, LPARAM lParam)
+TOOLBAR_SetStyle (TOOLBAR_INFO *infoPtr, DWORD style)
{
- SetWindowLongW(infoPtr->hwndSelf, GWL_STYLE, lParam);
-
- return TRUE;
+ infoPtr->dwStyle = style;
+ return 0;
}
@@ -5155,7 +5154,7 @@ TOOLBAR_Create (HWND hwnd, const CREATESTRUCTW *lpcs)
DWORD dwStyle = GetWindowLongW (hwnd, GWL_STYLE);
LOGFONTW logFont;
- TRACE("hwnd = %p\n", hwnd);
+ TRACE("hwnd = %p, style=0x%08x\n", hwnd, lpcs->style);
infoPtr->dwStyle = dwStyle;
GetClientRect(hwnd, &infoPtr->client_rect);
More information about the wine-cvs
mailing list