comctl32: Remove button wrap states when TBSTYLE_WRAPABLE is cleared.

This commit is contained in:
Huw Davies 2015-04-29 16:49:49 +01:00 committed by Alexandre Julliard
parent 8633fd625a
commit eb8df37a69
2 changed files with 21 additions and 0 deletions

View file

@ -1085,6 +1085,7 @@ static void test_sizes(void)
HWND hToolbar = NULL;
HIMAGELIST himl, himl2;
TBBUTTONINFOA tbinfo;
TBBUTTON button;
int style;
int i;
int fontheight = system_font_height();
@ -1100,9 +1101,13 @@ static void test_sizes(void)
check_sizes();
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0);
check_sizes();
SendMessageA(hToolbar, TB_GETBUTTON, 5, (LPARAM)&button);
ok(button.fsState == (TBSTATE_WRAP|TBSTATE_ENABLED), "got %08x\n", button.fsState);
/* after setting the TBSTYLE_WRAPABLE the TBSTATE_WRAP is ignored */
SetWindowLongA(hToolbar, GWL_STYLE, style|TBSTYLE_WRAPABLE);
check_sizes();
SendMessageA(hToolbar, TB_GETBUTTON, 5, (LPARAM)&button);
ok(button.fsState == TBSTATE_ENABLED, "got %08x\n", button.fsState);
/* adding new buttons with TBSTYLE_WRAPABLE doesn't add a new row */
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons1);
check_sizes();
@ -1111,6 +1116,11 @@ static void test_sizes(void)
for (i=0; i<15; i++)
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons1);
check_sizes_todo(0x4);
SendMessageA(hToolbar, TB_GETBUTTON, 31, (LPARAM)&button);
ok(button.fsState == (TBSTATE_WRAP|TBSTATE_ENABLED), "got %08x\n", button.fsState);
SetWindowLongA(hToolbar, GWL_STYLE, style);
SendMessageA(hToolbar, TB_GETBUTTON, 31, (LPARAM)&button);
ok(button.fsState == TBSTATE_ENABLED, "got %08x\n", button.fsState);
rebuild_toolbar_with_buttons(&hToolbar);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons1);

View file

@ -4918,6 +4918,13 @@ TOOLBAR_SetState (TOOLBAR_INFO *infoPtr, INT Id, LPARAM lParam)
return TRUE;
}
static inline void unwrap(TOOLBAR_INFO *info)
{
int i;
for (i = 0; i < info->nNumButtons; i++)
info->buttons[i].fsState &= ~TBSTATE_WRAP;
}
static LRESULT
TOOLBAR_SetStyle (TOOLBAR_INFO *infoPtr, DWORD style)
@ -4935,7 +4942,11 @@ TOOLBAR_SetStyle (TOOLBAR_INFO *infoPtr, DWORD style)
TOOLBAR_CheckStyle(infoPtr);
if ((dwOldStyle ^ style) & TBSTYLE_WRAPABLE)
{
if (dwOldStyle & TBSTYLE_WRAPABLE)
unwrap(infoPtr);
TOOLBAR_CalcToolbar(infoPtr);
}
else if ((dwOldStyle ^ style) & CCS_VERT)
TOOLBAR_LayoutToolbar(infoPtr);