From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/user32/tests/listbox.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)
diff --git a/dlls/user32/tests/listbox.c b/dlls/user32/tests/listbox.c index 747e3dae192..3adaaa0999e 100644 --- a/dlls/user32/tests/listbox.c +++ b/dlls/user32/tests/listbox.c @@ -618,6 +618,38 @@ static void test_LB_SETCURSEL(void) ok(ret == -1, "Unexpected anchor index %d.\n", ret);
DestroyWindow(hLB); + + /* LBS_NOSEL */ + hLB = create_listbox(LBS_NOSEL, 0); + ok(hLB != NULL, "Failed to create ListBox window.\n"); + + ret = SendMessageA(hLB, LB_GETCURSEL, 0, 0); + ok(ret == -1, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETSEL, 0, 0); + ok(!ret, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_SETCURSEL, 2, 0); + todo_wine + ok(ret == 2, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETSEL, 2, 0); + ok(ret == 1, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETCURSEL, 0, 0); + ok(ret == 2, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_SETCURSEL, 3, 0); + todo_wine + ok(ret == 3, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETSEL, 3, 0); + ok(ret == 1, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETCURSEL, 0, 0); + ok(ret == 3, "Unexpected return value %d.\n", ret); + + DestroyWindow(hLB); }
static void test_LB_SETSEL(void)
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/comctl32/tests/listbox.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
diff --git a/dlls/comctl32/tests/listbox.c b/dlls/comctl32/tests/listbox.c index 399df20cb6d..9993031fb5f 100644 --- a/dlls/comctl32/tests/listbox.c +++ b/dlls/comctl32/tests/listbox.c @@ -751,6 +751,39 @@ static void test_LB_SETCURSEL(void) ok(ret == -1, "Unexpected anchor index %d.\n", ret);
DestroyWindow(hLB); + + /* LBS_NOSEL */ + hLB = create_listbox(LBS_NOSEL, 0); + ok(hLB != NULL, "Failed to create ListBox window.\n"); + + ret = SendMessageA(hLB, LB_GETCURSEL, 0, 0); + ok(ret == -1, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETSEL, 0, 0); + ok(!ret, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_SETCURSEL, 2, 0); + todo_wine + ok(ret == 2, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETSEL, 2, 0); + ok(ret == 1, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETCURSEL, 0, 0); + ok(ret == 2, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_SETCURSEL, 3, 0); + todo_wine + ok(ret == 3, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETSEL, 3, 0); + ok(ret == 1, "Unexpected return value %d.\n", ret); + + ret = SendMessageA(hLB, LB_GETCURSEL, 0, 0); + ok(ret == 3, "Unexpected return value %d.\n", ret); + + DestroyWindow(hLB); + DestroyWindow(parent); }
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/user32/listbox.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/user32/listbox.c b/dlls/user32/listbox.c index 9d6ad8a3c75..c7e9fd783ec 100644 --- a/dlls/user32/listbox.c +++ b/dlls/user32/listbox.c @@ -608,7 +608,7 @@ static void LISTBOX_PaintItem( LB_DESCR *descr, HDC hdc, const RECT *rect, if (index < descr->nb_items) { item_str = get_item_string(descr, index); - selected = is_item_selected(descr, index); + selected = !(descr->style & LBS_NOSEL) && is_item_selected(descr, index); }
focused = !ignoreFocus && descr->focus_item == index && descr->caret_on && descr->in_focus;
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/comctl32/listbox.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/comctl32/listbox.c b/dlls/comctl32/listbox.c index 951b85856aa..bb37af8f10e 100644 --- a/dlls/comctl32/listbox.c +++ b/dlls/comctl32/listbox.c @@ -610,7 +610,7 @@ static void LISTBOX_PaintItem( LB_DESCR *descr, HDC hdc, const RECT *rect, if (index < descr->nb_items) { item_str = get_item_string(descr, index); - selected = is_item_selected(descr, index); + selected = !(descr->style & LBS_NOSEL) && is_item_selected(descr, index); }
focused = !ignoreFocus && descr->focus_item == index && descr->caret_on && descr->in_focus;
This merge request was approved by Zhiyi Zhang.