[5/5] comctl32/listview: Some tests for LVS_SINGLESEL switchover (try2)
Nikolay Sivov
bunglehead at gmail.com
Mon Apr 20 02:55:17 CDT 2009
Changelog:
- Trailing spaces removed since last patch
- Some tests for LVS_SINGLESEL switchover
>From 7be7da902009243f49d7a68061532ce94f4e4bff Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Mon, 20 Apr 2009 03:06:09 -0400
Subject: Some tests for LVS_SINGLESEL switchover
---
dlls/comctl32/listview.c | 1 -
dlls/comctl32/tests/listview.c | 55 ++++++++++++++++++++++++++++++++++++++++
include/commctrl.h | 2 +-
3 files changed, 56 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index d249cff..3c294f2 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -9566,7 +9566,6 @@ static INT LISTVIEW_StyleChanged(LISTVIEW_INFO *infoPtr, WPARAM wStyleType,
if (wStyleType != GWL_STYLE) return 0;
/* FIXME: if LVS_NOSORTHEADER changed, update header */
- /* or LVS_SINGLESEL */
/* or LVS_SORT{AS,DES}CENDING */
infoPtr->dwStyle = lpss->styleNew;
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index 5aa2f52..35fbe41 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -1351,6 +1351,7 @@ static void test_multiselect(void)
static const int items=5;
BYTE kstate[256];
select_task task;
+ LONG_PTR style;
static struct t_select_task task_list[] = {
{ "using VK_DOWN", 0, VK_DOWN, -1, -1 },
@@ -1407,6 +1408,60 @@ static void test_multiselect(void)
SetKeyboardState(kstate);
}
DestroyWindow(hwnd);
+
+ /* make multiple selection, then switch to LVS_SINGLESEL */
+ hwnd = create_listview_control(0);
+ for (i=0;i<items;i++) {
+ insert_item(hwnd, 0);
+ }
+ item_count = (int)SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0);
+ expect(items,item_count);
+ /* deselect all items */
+ ListView_SetItemState(hwnd, -1, 0, LVIS_SELECTED);
+ SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, -1);
+ for (i=0;i<3;i++) {
+ ListView_SetItemState(hwnd, i, LVIS_SELECTED, LVIS_SELECTED);
+ }
+
+ r = SendMessage(hwnd, LVM_GETSELECTEDCOUNT, 0, 0);
+ expect(3, r);
+ r = SendMessage(hwnd, LVM_GETSELECTIONMARK, 0, 0);
+todo_wine
+ expect(-1, r);
+
+ style = GetWindowLongPtrA(hwnd, GWL_STYLE);
+ ok(!(style & LVS_SINGLESEL), "LVS_SINGLESEL isn't expected\n");
+ SetWindowLongPtrA(hwnd, GWL_STYLE, style | LVS_SINGLESEL);
+ /* check that style is accepted */
+ style = GetWindowLongPtrA(hwnd, GWL_STYLE);
+ ok(style & LVS_SINGLESEL, "LVS_SINGLESEL expected\n");
+
+ for (i=0;i<3;i++) {
+ r = ListView_GetItemState(hwnd, i, LVIS_SELECTED);
+ ok(r & LVIS_SELECTED, "Expected item %d to be selected\n", i);
+ }
+ r = SendMessage(hwnd, LVM_GETSELECTEDCOUNT, 0, 0);
+ expect(3, r);
+ SendMessage(hwnd, LVM_GETSELECTIONMARK, 0, 0);
+ expect(3, r);
+
+ /* select one more */
+ ListView_SetItemState(hwnd, 3, LVIS_SELECTED, LVIS_SELECTED);
+
+ for (i=0;i<3;i++) {
+ r = ListView_GetItemState(hwnd, i, LVIS_SELECTED);
+ ok(!(r & LVIS_SELECTED), "Expected item %d to be unselected\n", i);
+ }
+ r = ListView_GetItemState(hwnd, 3, LVIS_SELECTED);
+ ok(r & LVIS_SELECTED, "Expected item %d to be selected\n", i);
+
+ r = SendMessage(hwnd, LVM_GETSELECTEDCOUNT, 0, 0);
+ expect(1, r);
+ r = SendMessage(hwnd, LVM_GETSELECTIONMARK, 0, 0);
+todo_wine
+ expect(-1, r);
+
+ DestroyWindow(hwnd);
}
static void test_subitem_rect(void)
diff --git a/include/commctrl.h b/include/commctrl.h
index 690ecbd..f2a608b 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -3715,7 +3715,7 @@ typedef struct NMLVSCROLL
{ LVITEMA _LVi; _LVi.state = data; _LVi.stateMask = dataMask;\
SNDMSGA(hwnd, LVM_SETITEMSTATE, (WPARAM)(UINT)i, (LPARAM) (LPLVITEMA)&_LVi);}
#define ListView_GetItemState(hwnd,i,mask) \
- (BOOL)SNDMSGA((hwnd),LVM_GETITEMSTATE,(WPARAM)(UINT)(i),(LPARAM)(UINT)(mask))
+ (UINT)SNDMSGA((hwnd),LVM_GETITEMSTATE,(WPARAM)(UINT)(i),(LPARAM)(UINT)(mask))
#define ListView_GetCountPerPage(hwnd) \
(BOOL)SNDMSGW((hwnd),LVM_GETCOUNTPERPAGE,0,0L)
#define ListView_GetImageList(hwnd,iImageList) \
--
1.5.6.5
More information about the wine-patches
mailing list