From a80a344e4feebd24a4e3b2ea1c421c6a9cbac595 Mon Sep 17 00:00:00 2001 From: Sergey Khodych Date: Tue, 4 Nov 2008 21:02:59 +0200 Subject: comctl32: toolbar: Calculate a correct size for empty buttons with the BTNS_AUTOSIZE style (with test). --- dlls/comctl32/tests/toolbar.c | 13 +++++++++++++ dlls/comctl32/toolbar.c | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/dlls/comctl32/tests/toolbar.c b/dlls/comctl32/tests/toolbar.c index e648ed8..94ee0d3 100644 --- a/dlls/comctl32/tests/toolbar.c +++ b/dlls/comctl32/tests/toolbar.c @@ -718,6 +718,9 @@ static tbsize_result_t tbsize_results[] = { 0, 0, 163, 38}, {163, 0, 326, 38}, {326, 0, 489, 38}, {489, 0, 652, 38}, {652, 0, 819, 38}, {819, 0, 850, 38}, }, }, + { {0, 0, 672, 100}, {239, 102}, 3, { + { 0, 2, 100, 102}, {100, 2, 139, 102}, {139, 2, 239, 102}, + }, }, }; static int tbsize_numtests = 0; @@ -943,6 +946,16 @@ static void test_sizes(void) SendMessageA(hToolbar, TB_DELETEBUTTON, 0, 0); ok(SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0) == MAKELONG(27, 39), "Unexpected button size\n"); + rebuild_toolbar(&hToolbar); + + ok(SendMessageA(hToolbar, TB_SETBITMAPSIZE, (WPARAM)0, (LPARAM) MAKELONG (32, 32) ) == 1, "TB_SETBITMAPSIZE failed\n"); + ok(SendMessageA(hToolbar, TB_SETBUTTONSIZE, (WPARAM)0, (LPARAM)MAKELONG(100, 100)) == 1, "TB_SETBUTTONSIZE failed\n"); + ok(SendMessageA(hToolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&buttons2[0]) == 1, "TB_ADDBUTTONS failed\n"); + ok(SendMessageA(hToolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&buttons3[2]) == 1, "TB_ADDBUTTONS failed\n"); + ok(SendMessageA(hToolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&buttons3[0]) == 1, "TB_ADDBUTTONS failed\n"); + SendMessageA(hToolbar, TB_AUTOSIZE, (WPARAM)0, (LPARAM)0 ); + check_sizes(); + DestroyWindow(hToolbar); } diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index c2f602f..397843f 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -1598,8 +1598,8 @@ static inline SIZE TOOLBAR_MeasureButton(const TOOLBAR_INFO *infoPtr, SIZE sizeS { sizeButton.cy = sizeString.cy + infoPtr->szPadding.cy + NONLIST_NOTEXT_OFFSET; - sizeButton.cx = 2*GetSystemMetrics(SM_CXEDGE) + - infoPtr->szPadding.cx + sizeString.cx; + sizeButton.cx = infoPtr->szPadding.cx + + max(2*GetSystemMetrics(SM_CXEDGE) + sizeString.cx, infoPtr->nBitmapWidth); } } return sizeButton; -- 1.5.3.3