From: Ilia Docin ilya.docin@contentai.ru
--- dlls/comctl32/listview.c | 7 ++++++- dlls/comctl32/tests/listview.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c index 0302e3e19a0..2ceb7c8d484 100644 --- a/dlls/comctl32/listview.c +++ b/dlls/comctl32/listview.c @@ -7371,11 +7371,16 @@ static INT LISTVIEW_GetNextItem(const LISTVIEW_INFO *infoPtr, INT nItem, UINT uF { if ((infoPtr->uView == LV_VIEW_LIST) || (infoPtr->uView == LV_VIEW_DETAILS)) { + TRACE("nItem = %d\n", nItem); while (nItem < infoPtr->nItemCount) { nItem++; - if ((LISTVIEW_GetItemState(infoPtr, nItem, uMask) & uMask) == uMask) + TRACE("nItemNext = %d\n", nItem); + if ((LISTVIEW_GetItemState(infoPtr, nItem, uMask) & uMask) == uMask) { + TRACE("nItemReturn = %d\n", nItem); return nItem; + } + TRACE("GoNext\n"); } } else diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c index 920c2c1c351..0f77168c336 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c @@ -7234,6 +7234,36 @@ static void test_LVM_SETBKIMAGE(BOOL is_v6) CoUninitialize(); }
+static void test_LVM_GETNEXTITEM(void) +{ + /* LVM_GETNEXTITEM */ + + HWND hwnd; + DWORD r; + UINT uFlagsAbove = MAKELPARAM(LVNI_ABOVE, 0); + UINT uFlagsBelow = MAKELPARAM(LVNI_BELOW, 0); + + hwnd = create_listview_control(LVS_REPORT); + insert_item(hwnd, 0); + insert_item(hwnd, 1); + insert_item(hwnd, 2); + + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 0, uFlagsAbove); + expect(-1, r); + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 0, uFlagsBelow); + expect(1, r); + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 1, uFlagsAbove); + expect(0, r); + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 1, uFlagsBelow); + expect(2, r); + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 2, uFlagsAbove); + expect(1, r); + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 2, uFlagsBelow); + todo_wine expect(-1, r); + + DestroyWindow(hwnd); +} + START_TEST(listview) { ULONG_PTR ctx_cookie; @@ -7348,6 +7378,7 @@ START_TEST(listview) test_item_state_change(); test_selected_column(); test_LVM_GETNEXTITEMINDEX(); + test_LVM_GETNEXTITEM(); test_LVM_SETBKIMAGE(TRUE);
unload_v6_module(ctx_cookie, hCtx);