Duane Clark : comctl32: listview: Allow LVIF_STATE flag in subitems.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jan 8 14:44:29 CST 2007
Module: wine
Branch: master
Commit: 2575c37b22371e2df0ce7f436577920129692781
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2575c37b22371e2df0ce7f436577920129692781
Author: Duane Clark <fpga at pacbell.net>
Date: Sat Jan 6 15:55:45 2007 -0800
comctl32: listview: Allow LVIF_STATE flag in subitems.
---
dlls/comctl32/listview.c | 8 ++++++--
dlls/comctl32/tests/listview.c | 27 +++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 6340c87..11e02ee 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -3506,8 +3506,12 @@ static BOOL set_sub_item(LISTVIEW_INFO *
if (lpLVItem->iSubItem >= DPA_GetPtrCount(infoPtr->hdpaColumns)) return FALSE;
/* First do some sanity checks */
- if (lpLVItem->mask & ~(LVIF_TEXT | LVIF_IMAGE)) return FALSE;
- if (!(lpLVItem->mask & (LVIF_TEXT | LVIF_IMAGE))) return TRUE;
+ /* The LVIF_STATE flag is valid for subitems, but does not appear to be
+ particularly useful. We currently do not actually do anything with
+ the flag on subitems.
+ */
+ if (lpLVItem->mask & ~(LVIF_TEXT | LVIF_IMAGE | LVIF_STATE)) return FALSE;
+ if (!(lpLVItem->mask & (LVIF_TEXT | LVIF_IMAGE | LVIF_STATE))) return TRUE;
/* get the subitem structure, and create it if not there */
hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, lpLVItem->iItem);
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index 127208c..9d14e39 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -313,6 +313,33 @@ static void test_items(void)
ok(r != 0, "ret %d\n", r);
ok(item.lParam == lparamTest, "got lParam %lx, expected %lx\n", item.lParam, lparamTest);
+ /**** Some tests of state highlighting ****/
+ memset (&item, 0xaa, sizeof (item));
+ item.mask = LVIF_STATE;
+ item.iItem = 0;
+ item.iSubItem = 0;
+ item.state = LVIS_SELECTED;
+ item.stateMask = LVIS_SELECTED | LVIS_DROPHILITED;
+ r = SendMessage(hwnd, LVM_SETITEM, 0, (LPARAM) &item);
+ ok(r != 0, "ret %d\n", r);
+ item.iSubItem = 1;
+ item.state = LVIS_DROPHILITED;
+ r = SendMessage(hwnd, LVM_SETITEM, 0, (LPARAM) &item);
+ ok(r != 0, "ret %d\n", r);
+
+ memset (&item, 0xaa, sizeof (item));
+ item.mask = LVIF_STATE;
+ item.iItem = 0;
+ item.iSubItem = 0;
+ item.stateMask = -1;
+ r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
+ ok(r != 0, "ret %d\n", r);
+ ok(item.state == LVIS_SELECTED, "got state %x, expected %x\n", item.state, LVIS_SELECTED);
+ item.iSubItem = 1;
+ r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
+ ok(r != 0, "ret %d\n", r);
+ todo_wine ok(item.state == LVIS_DROPHILITED, "got state %x, expected %x\n", item.state, LVIS_DROPHILITED);
+
DestroyWindow(hwnd);
}
More information about the wine-cvs
mailing list