[PATCH 4/4] comctl32/tests: Fixed toolbar tests for varing width of button strings.
Austin Lund
austin.lund at gmail.com
Fri Nov 5 00:31:55 CDT 2010
---
dlls/comctl32/tests/toolbar.c | 61 +++++++++++++++++++++++++++++-----------
1 files changed, 44 insertions(+), 17 deletions(-)
diff --git a/dlls/comctl32/tests/toolbar.c b/dlls/comctl32/tests/toolbar.c
index 6da3f6c..ee3a36f 100644
--- a/dlls/comctl32/tests/toolbar.c
+++ b/dlls/comctl32/tests/toolbar.c
@@ -688,6 +688,17 @@ static int system_font_height(void) {
return tm.tmHeight;
}
+static int string_width(char *s) {
+ SIZE sz;
+ HDC hdc;
+
+ hdc = CreateCompatibleDC(NULL);
+ GetTextExtentPoint32A(hdc, s, strlen(s), &sz);
+ DeleteDC(hdc);
+
+ return sz.cx;
+}
+
typedef struct
{
RECT rcClient;
@@ -696,10 +707,15 @@ typedef struct
RECT rcButtons[100];
} tbsize_result_t;
+#define STRING0 "A"
+#define STRING1 "MMMMMMMMMMMMM"
+#define STRING2 "Tst"
+
tbsize_result_t *tbsize_results = NULL;
static void init_tbsize_results(void) {
int fontheight = system_font_height();
+ int buttonwidth;
tbsize_results = (tbsize_result_t *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 24*sizeof(tbsize_result_t));
tbsize_results[0] = (tbsize_result_t) { {0, 0, 672, 26}, {100, 22}, 5, {
@@ -782,20 +798,31 @@ static void init_tbsize_results(void) {
{ 54, 0, 77, 22}, { 77, 0, 100, 22}, {100, 0, 123, 22},
{123, 0, 146, 22}, {146, 0, 169, 22}, {169, 0, 192, 22},
{192, 0, 215, 22}, {215, 0, 238, 22} } };
+ buttonwidth = 7 + string_width(STRING1);
tbsize_results[17] = (tbsize_result_t) { {0, 0, 672, 26}, {489, 39}, 3, {
- { 0, 2, 163, 25 + fontheight}, {163, 2, 330, 25 + fontheight}, {330, 2, 493, 25 + fontheight} } };
+ { 0, 2, buttonwidth, 25 + fontheight},
+ {buttonwidth, 2, 2*buttonwidth + 4, 25 + fontheight},
+ {2*buttonwidth + 4, 2, 3*buttonwidth + 4, 25 + fontheight} } };
tbsize_results[18] = (tbsize_result_t) { {0, 0, 672, 104}, {978, 24}, 6, {
- { 0, 2, 163, 10 + fontheight}, {163, 2, 326, 10 + fontheight}, {326, 2, 489, 10 + fontheight},
- {489, 2, 652, 10 + fontheight}, {652, 2, 819, 10 + fontheight}, {819, 2, 850, 10 + fontheight} } };
+ { 0, 2, buttonwidth, 10 + fontheight},
+ {buttonwidth, 2, 2*buttonwidth, 10 + fontheight},
+ {2*buttonwidth, 2, 3*buttonwidth, 10 + fontheight},
+ {3*buttonwidth, 2, 4*buttonwidth, 10 + fontheight},
+ {4*buttonwidth, 2, 5*buttonwidth + 4, 10 + fontheight},
+ {5*buttonwidth + 4, 2, 5*buttonwidth + 4 + string_width(STRING2) + 11, 10 + fontheight} } };
tbsize_results[19] = (tbsize_result_t) { {0, 0, 672, 28}, {978, 38}, 6, {
- { 0, 0, 163, 22 + fontheight}, {163, 0, 326, 22 + fontheight}, {326, 0, 489, 22 + fontheight},
- {489, 0, 652, 22 + fontheight}, {652, 0, 819, 22 + fontheight}, {819, 0, 850, 22 + fontheight} } };
+ { 0, 0, buttonwidth, 22 + fontheight},
+ {buttonwidth, 0, 2*buttonwidth, 22 + fontheight},
+ {2*buttonwidth, 0, 3*buttonwidth, 22 + fontheight},
+ {3*buttonwidth, 0, 4*buttonwidth, 22 + fontheight},
+ {4*buttonwidth, 0, 5*buttonwidth + 4, 22 + fontheight},
+ {5*buttonwidth + 4, 0, 5*buttonwidth + 4 + string_width(STRING2) + 11, 22 + fontheight} } };
tbsize_results[20] = (tbsize_result_t) { {0, 0, 672, 100}, {239, 102}, 3, {
{ 0, 2, 100, 102}, {100, 2, 139, 102}, {139, 2, 239, 102} } };
tbsize_results[21] = (tbsize_result_t) { {0, 0, 672, 42}, {185, 40}, 3, {
- { 0, 2, 75, 40}, {75, 2, 118, 40}, {118, 2, 185, 40} } };
+ { 0, 2, 75, 40}, {75, 2, 118, 40}, {118, 2, 165 + string_width(STRING2), 40} } };
tbsize_results[22] = (tbsize_result_t) { {0, 0, 672, 42}, {67, 40}, 1, {
- { 0, 2, 67, 40} } };
+ { 0, 2, 47 + string_width(STRING2), 40} } };
tbsize_results[23] = (tbsize_result_t) { {0, 0, 672, 42}, {67, 41}, 2, {
{ 0, 2, 672, 25 + fontheight}, { 0, 25 + fontheight, 672, 48 + 2*fontheight} } };
}
@@ -863,7 +890,7 @@ static TBBUTTON buttons3[] = {
{0, 30, TBSTATE_ENABLED, 0, {0, }, 0, 0},
{0, 31, TBSTATE_ENABLED, 0, {0, }, 0, 1},
{0, 32, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0, }, 0, 1},
- {0, 33, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0, }, 0, (UINT_PTR)"Tst"}
+ {0, 33, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0, }, 0, (UINT_PTR)STRING2}
};
static void test_sizes(void)
@@ -949,7 +976,7 @@ static void test_sizes(void)
check_sizes();
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[0]);
/* TB_ADDSTRING resets the size */
- SendMessageA(hToolbar, TB_ADDSTRING, 0, (LPARAM)"A\0MMMMMMMMMMMMM\0");
+ SendMessageA(hToolbar, TB_ADDSTRING, 0, (LPARAM) STRING0 "\0" STRING1 "\0");
check_button_size(hToolbar, 23, 23 + fontheight);
check_sizes();
@@ -984,7 +1011,7 @@ static void test_sizes(void)
CHECK_IMAGELIST(16, 14, 12);
rebuild_toolbar(&hToolbar);
- SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)"A\0MMMMMMMMMMMMM\0");
+ SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)STRING0 "\0" STRING1 "\0");
/* the height is increased after a TB_ADDSTRING */
check_button_size(hToolbar, 23, 23 + fontheight);
SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(100, 100));
@@ -994,13 +1021,13 @@ static void test_sizes(void)
SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(100, 100));
/* an BTNS_AUTOSIZE button is also considered when computing the new size */
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[2]);
- check_button_size(hToolbar, 163, 23 + fontheight);
+ check_button_size(hToolbar, 7 + string_width(STRING1), 23 + fontheight);
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[0]);
check_sizes();
/* delete button doesn't change the buttons size */
SendMessageA(hToolbar, TB_DELETEBUTTON, 2, 0);
SendMessageA(hToolbar, TB_DELETEBUTTON, 1, 0);
- check_button_size(hToolbar, 163, 23 + fontheight);
+ check_button_size(hToolbar, 7 + string_width(STRING1), 23 + fontheight);
/* TB_INSERTBUTTONS will */
SendMessageA(hToolbar, TB_INSERTBUTTON, 1, (LPARAM)&buttons2[0]);
check_button_size(hToolbar, 23, 22);
@@ -1037,11 +1064,11 @@ static void test_sizes(void)
ok(SendMessageA(hToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl) == 0, "TB_SETIMAGELIST failed\n");
check_button_size(hToolbar, 27, 21)
/* the text is taken into account */
- SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)"A\0MMMMMMMMMMMMM\0");
+ SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)STRING0 "\0" STRING1 "\0");
SendMessageA(hToolbar, TB_ADDBUTTONS, 4, (LPARAM)buttons3);
- check_button_size(hToolbar, 163, 22 + fontheight);
+ check_button_size(hToolbar, 7 + string_width(STRING1), 22 + fontheight);
ok(SendMessageA(hToolbar, TB_SETIMAGELIST, 0, 0) == (LRESULT)himl, "TB_SETIMAGELIST failed\n");
- check_button_size(hToolbar, 163, 8 + fontheight);
+ check_button_size(hToolbar, 7 + string_width(STRING1), 8 + fontheight);
/* the style change also comes into effect */
check_sizes();
SetWindowLong(hToolbar, GWL_STYLE, GetWindowLong(hToolbar, GWL_STYLE) | TBSTYLE_FLAT);
@@ -1053,9 +1080,9 @@ static void test_sizes(void)
ImageList_Destroy(himl2);
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[3]);
- check_button_size(hToolbar, 27, 23 + fontheight);
+ check_button_size(hToolbar, 7 + string_width(STRING2), 23 + fontheight);
SendMessageA(hToolbar, TB_DELETEBUTTON, 0, 0);
- check_button_size(hToolbar, 27, 23 + fontheight);
+ check_button_size(hToolbar, 7 + string_width(STRING2), 23 + fontheight);
rebuild_toolbar(&hToolbar);
--
1.7.1
More information about the wine-patches
mailing list