[PATCH] comctl32/listview: Add partial implementation of LVM_GETNEXTITEMINDEX.
Nikolay Sivov
nsivov at codeweavers.com
Fri Jan 21 10:08:24 CST 2022
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/comctl32/listview.c | 14 ++++++++++++++
dlls/comctl32/tests/listview.c | 32 ++++++++++++++++++++++++++++++++
2 files changed, 46 insertions(+)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 044e64bfa53..4176fb72c63 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -7452,6 +7452,17 @@ static INT LISTVIEW_GetNextItem(const LISTVIEW_INFO *infoPtr, INT nItem, UINT uF
return -1;
}
+static BOOL LISTVIEW_GetNextItemIndex(const LISTVIEW_INFO *infoPtr, LVITEMINDEX *index, UINT flags)
+{
+ /* FIXME: specified item group is ignored */
+
+ if (!index)
+ return FALSE;
+
+ index->iItem = LISTVIEW_GetNextItem(infoPtr, index->iItem, flags);
+ return index->iItem != -1;
+}
+
/* LISTVIEW_GetNumberOfWorkAreas */
/***
@@ -11426,6 +11437,9 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_GETNEXTITEM:
return LISTVIEW_GetNextItem(infoPtr, (INT)wParam, LOWORD(lParam));
+ case LVM_GETNEXTITEMINDEX:
+ return LISTVIEW_GetNextItemIndex(infoPtr, (LVITEMINDEX *)wParam, lParam);
+
case LVM_GETNUMBEROFWORKAREAS:
FIXME("LVM_GETNUMBEROFWORKAREAS: unimplemented\n");
return 1;
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index e95b81f5bb1..5b40cea1fce 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -6624,6 +6624,37 @@ static void test_selected_column(void)
}
}
+static void test_LVM_GETNEXTITEMINDEX(void)
+{
+ LVITEMINDEX index;
+ HWND hwnd;
+ BOOL ret;
+
+ hwnd = create_listview_control(LVS_REPORT);
+
+ insert_item(hwnd, 0);
+ insert_item(hwnd, 1);
+
+ ret = SendMessageA(hwnd, LVM_GETNEXTITEMINDEX, 0, LVNI_ALL);
+ ok(!ret, "Unexpected return value %d.\n", ret);
+
+ index.iItem = -1;
+ index.iGroup = 0;
+ ret = SendMessageA(hwnd, LVM_GETNEXTITEMINDEX, (WPARAM)&index, LVNI_ALL);
+ ok(ret, "Unexpected return value %d.\n", ret);
+ ok(index.iItem == 0, "Unexpected item index %d.\n", index.iItem);
+
+ ret = SendMessageA(hwnd, LVM_GETNEXTITEMINDEX, (WPARAM)&index, LVNI_ALL);
+ ok(ret, "Unexpected return value %d.\n", ret);
+ ok(index.iItem == 1, "Unexpected item index %d.\n", index.iItem);
+
+ ret = SendMessageA(hwnd, LVM_GETNEXTITEMINDEX, (WPARAM)&index, LVNI_ALL);
+ ok(!ret, "Unexpected return value %d.\n", ret);
+ ok(index.iItem == -1, "Unexpected item index %d.\n", index.iItem);
+
+ DestroyWindow(hwnd);
+}
+
START_TEST(listview)
{
ULONG_PTR ctx_cookie;
@@ -6730,6 +6761,7 @@ START_TEST(listview)
test_LVM_GETCOUNTPERPAGE();
test_item_state_change();
test_selected_column();
+ test_LVM_GETNEXTITEMINDEX();
unload_v6_module(ctx_cookie, hCtx);
--
2.34.1
More information about the wine-devel
mailing list