[PATCH] [bug9230] Listview fails to add a column if mask=0
Jason Edmeades
jason.edmeades at googlemail.com
Thu Aug 16 17:45:41 CDT 2007
Tests (included) show a column is added with a default width. This
fixes the problem reported in bug 9230 where the listview contains
nothing as the columns are created then manipulated.
---
dlls/comctl32/listview.c | 11 ++++++++++-
dlls/comctl32/tests/listview.c | 23 +++++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 7602217..ab60d23 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -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
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index a64d4d3..9138442 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -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();
}
--
1.5.0
More information about the wine-patches
mailing list