-- v22: comctl32/listview: Do not return items count on getting next item for last one. comctl32/tests: Add LVM_GETNEXTITEM test.
From: Ilia Docin ilya.docin@contentai.ru
--- dlls/comctl32/tests/listview.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c index 920c2c1c351..b44c134d9ce 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c @@ -7234,6 +7234,27 @@ static void test_LVM_SETBKIMAGE(BOOL is_v6) CoUninitialize(); }
+static void test_LVM_GETNEXTITEM(void) +{ + HWND hwnd; + LRESULT lr; + + hwnd = create_listview_control(LVS_REPORT); + insert_item(hwnd, 0); + insert_item(hwnd, 1); + + lr = SendMessageA(hwnd, LVM_GETNEXTITEM, 0, LVNI_ABOVE); + expect(-1, lr); + lr = SendMessageA(hwnd, LVM_GETNEXTITEM, 0, LVNI_BELOW); + expect(1, lr); + lr = SendMessageA(hwnd, LVM_GETNEXTITEM, 1, LVNI_ABOVE); + expect(0, lr); + lr = SendMessageA(hwnd, LVM_GETNEXTITEM, 1, LVNI_BELOW); + todo_wine expect(-1, lr); + + DestroyWindow(hwnd); +} + START_TEST(listview) { ULONG_PTR ctx_cookie; @@ -7300,6 +7321,7 @@ START_TEST(listview) test_item_state_change(); test_LVM_SETBKIMAGE(FALSE); test_custom_sort(); + test_LVM_GETNEXTITEM();
if (!load_v6_module(&ctx_cookie, &hCtx)) { @@ -7348,6 +7370,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);
From: Ilia Docin ilya.docin@contentai.ru
--- dlls/comctl32/listview.c | 2 +- dlls/comctl32/tests/listview.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c index 0302e3e19a0..13d1bd092f2 100644 --- a/dlls/comctl32/listview.c +++ b/dlls/comctl32/listview.c @@ -7371,7 +7371,7 @@ static INT LISTVIEW_GetNextItem(const LISTVIEW_INFO *infoPtr, INT nItem, UINT uF { if ((infoPtr->uView == LV_VIEW_LIST) || (infoPtr->uView == LV_VIEW_DETAILS)) { - while (nItem < infoPtr->nItemCount) + while (nItem < infoPtr->nItemCount - 1) { nItem++; if ((LISTVIEW_GetItemState(infoPtr, nItem, uMask) & uMask) == uMask) diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c index b44c134d9ce..12825ffaa7b 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c @@ -7250,7 +7250,7 @@ static void test_LVM_GETNEXTITEM(void) lr = SendMessageA(hwnd, LVM_GETNEXTITEM, 1, LVNI_ABOVE); expect(0, lr); lr = SendMessageA(hwnd, LVM_GETNEXTITEM, 1, LVNI_BELOW); - todo_wine expect(-1, lr); + expect(-1, lr);
DestroyWindow(hwnd); }
On Tue Aug 20 14:51:37 2024 +0000, Ilia Docin wrote:
changed this line in [version 22 of the diff](/wine/wine/-/merge_requests/5909/diffs?diff_id=127442&start_sha=1f32376fb3489a1a207d54f942be509e1e7b3580#0251bfdc5c488ffd767c45cd3a965188becc33f7_7240_7240)
Ok, fixed.
On Tue Aug 20 14:51:36 2024 +0000, Ilia Docin wrote:
changed this line in [version 22 of the diff](/wine/wine/-/merge_requests/5909/diffs?diff_id=127442&start_sha=1f32376fb3489a1a207d54f942be509e1e7b3580#0251bfdc5c488ffd767c45cd3a965188becc33f7_7241_7240)
Done.
This merge request was approved by Zhiyi Zhang.