comctl32: Listview fails to add a column if mask=0.

oldstable
Jason Edmeades 2007-08-16 23:45:41 +01:00 committed by Alexandre Julliard
parent b150ea67a9
commit f6631265f3
2 changed files with 33 additions and 1 deletions

View File

@ -6659,7 +6659,16 @@ static INT LISTVIEW_InsertColumnT(LISTVIEW_INFO *infoPtr, INT nColumn,
ZeroMemory(&hdi, sizeof(HDITEMW));
column_fill_hditem(infoPtr, &hdi, nColumn, lpColumn, isW);
/*
* A mask not including LVCF_WIDTH turns into a mask of width, width 10
* (can be seen in SPY) otherwise column never gets added.
*/
if (!(lpColumn->mask & LVCF_WIDTH)) {
hdi.mask |= HDI_WIDTH;
hdi.cxy = 10;
}
/*
* when the iSubItem is available Windows copies it to the header lParam. It seems
* to happen only in LVM_INSERTCOLUMN - not in LVM_SETCOLUMN

View File

@ -676,6 +676,28 @@ static void test_items(void)
DestroyWindow(hwnd);
}
static void test_columns(void)
{
HWND hwnd;
LVCOLUMN column;
DWORD rc;
hwnd = CreateWindowEx(0, "SysListView32", "foo", LVS_REPORT,
10, 10, 100, 200, hwndparent, NULL, NULL, NULL);
ok(hwnd != NULL, "failed to create listview window\n");
/* Add a column with no mask */
memset(&column, 0xaa, sizeof(column));
column.mask = 0;
rc = ListView_InsertColumn(hwnd, 0, &column);
ok(rc==0, "Inserting column with no mask failed with %d\n", rc);
/* Check its width */
rc = ListView_GetColumnWidth(hwnd, 0);
ok(rc==10, "Inserting column with no mask failed to set width to 10 with %d\n", rc);
DestroyWindow(hwnd);
}
/* test setting imagelist between WM_NCCREATE and WM_CREATE */
static WNDPROC listviewWndProc;
static HIMAGELIST test_create_imagelist;
@ -1041,4 +1063,5 @@ START_TEST(listview)
test_color();
test_item_count();
test_item_position();
test_columns();
}