Module: wine Branch: master Commit: 5b7b911f0691a866e8639e54a3646b826d9197bb URL: http://source.winehq.org/git/wine.git/?a=commit;h=5b7b911f0691a866e8639e54a3...
Author: Huw Davies huw@codeweavers.com Date: Fri Apr 17 13:24:17 2015 +0100
comctl32: TBSTYLE_EX_MIXEDBUTTONS doesn't mean buttons should be auto-sized.
---
dlls/comctl32/tests/toolbar.c | 52 ++++++++++++++++++++++++++++++++++++++++++- dlls/comctl32/toolbar.c | 3 +-- 2 files changed, 52 insertions(+), 3 deletions(-)
diff --git a/dlls/comctl32/tests/toolbar.c b/dlls/comctl32/tests/toolbar.c index cdfe7dd..d3088f9 100644 --- a/dlls/comctl32/tests/toolbar.c +++ b/dlls/comctl32/tests/toolbar.c @@ -748,7 +748,7 @@ static void tbsize_addbutton(tbsize_result_t *tbsr, int left, int top, int right
static tbsize_result_t *tbsize_results;
-#define tbsize_results_num 24 +#define tbsize_results_num 28
static void init_tbsize_results(void) { int fontheight = system_font_height(); @@ -991,6 +991,18 @@ static void init_tbsize_results(void) { tbsize_results[23] = init_tbsize_result(2, 0, 0, 672, 42, 67, 41); tbsize_addbutton(&tbsize_results[23], 0, 2, 672, 25 + fontheight); tbsize_addbutton(&tbsize_results[23], 0, 25 + fontheight, 672, 48 + 2*fontheight); + + tbsize_results[24] = init_tbsize_result(1, 0, 0, 672, 42, 67, 40); + tbsize_addbutton(&tbsize_results[24], 0, 2, 11 + string_width(STRING2), 24); + + tbsize_results[25] = init_tbsize_result(1, 0, 0, 672, 42, 67, 40); + tbsize_addbutton(&tbsize_results[25], 0, 2, 40, 24); + + tbsize_results[26] = init_tbsize_result(1, 0, 0, 672, 42, 67, 40); + tbsize_addbutton(&tbsize_results[26], 0, 2, 40, 24); + + tbsize_results[27] = init_tbsize_result(1, 0, 0, 672, 42, 67, 40); + tbsize_addbutton(&tbsize_results[27], 0, 2, 40, 24); }
static void free_tbsize_results(void) { @@ -1062,6 +1074,11 @@ static TBBUTTON buttons3[] = { {0, 32, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0, }, 0, 1}, {0, 33, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0, }, 0, (UINT_PTR)STRING2} }; +static TBBUTTON buttons4[] = { + {0, 40, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0, }, 0, (UINT_PTR)STRING2}, + {0, 41, TBSTATE_ENABLED, 0, {0, }, 0, (UINT_PTR)STRING2}, + {0, 41, TBSTATE_ENABLED, BTNS_SHOWTEXT, {0, }, 0, (UINT_PTR)STRING2} +};
static void test_sizes(void) { @@ -1300,8 +1317,41 @@ static void test_sizes(void) { tbinfo.dwMask = TBIF_SIZE; ok(SendMessageA(hToolbar, TB_SETBUTTONINFOA, 33, (LPARAM)&tbinfo) != 0, "TB_SETBUTTONINFOA failed\n"); + tbsize_numtests++; }
+ /* Single BTNS_AUTOSIZE button with string. */ + rebuild_toolbar(&hToolbar); + ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons4[0]) == 1, "TB_ADDBUTTONSA failed\n"); + ok(SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(40, 20)) == 1, "TB_SETBUTTONSIZE failed\n"); + SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0 ); + check_sizes(); + + /* Single non-BTNS_AUTOSIZE button with string. */ + rebuild_toolbar(&hToolbar); + ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons4[1]) == 1, "TB_ADDBUTTONSA failed\n"); + ok(SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(40, 20)) == 1, "TB_SETBUTTONSIZE failed\n"); + SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0 ); + check_sizes(); + + /* Single non-BTNS_AUTOSIZE button with string with TBSTYLE_EX_MIXEDBUTTONS set. */ + rebuild_toolbar(&hToolbar); + SendMessageA(hToolbar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS); + style = SendMessageA(hToolbar, TB_GETSTYLE, 0, 0); + ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons4[1]) == 1, "TB_ADDBUTTONSA failed\n"); + ok(SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(40, 20)) == 1, "TB_SETBUTTONSIZE failed\n"); + SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0 ); + check_sizes(); + + /* Single non-BTNS_AUTOSIZE, BTNS_SHOWTEXT button with string with TBSTYLE_EX_MIXEDBUTTONS set. */ + rebuild_toolbar(&hToolbar); + SendMessageA(hToolbar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS); + style = SendMessageA(hToolbar, TB_GETSTYLE, 0, 0); + ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons4[2]) == 1, "TB_ADDBUTTONSA failed\n"); + ok(SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(40, 20)) == 1, "TB_SETBUTTONSIZE failed\n"); + SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0 ); + check_sizes(); + free_tbsize_results(); DestroyWindow(hToolbar); } diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index a329c26..7727ee2 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -1689,8 +1689,7 @@ TOOLBAR_LayoutToolbar(TOOLBAR_INFO *infoPtr) { if (btnPtr->cx) cx = btnPtr->cx; - else if ((infoPtr->dwExStyle & TBSTYLE_EX_MIXEDBUTTONS) || - (btnPtr->fsStyle & BTNS_AUTOSIZE)) + else if (btnPtr->fsStyle & BTNS_AUTOSIZE) { SIZE sz; HDC hdc;