r = SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM) &item);
ok(r == 0, "should not fail\n");
- memset(&r1, 0, sizeof r1);
- r1.left = LVIR_ICON;
+ SetRect(&r1, LVIR_ICON, 0, 0, 0);
r = SendMessageA(hwnd, LVM_GETITEMRECT, 0, (LPARAM) &r1);
expect(1, r);
r = SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM) &item);
ok(r == 0, "should not fail\n");
- memset(&r2, 0, sizeof r2);
- r2.left = LVIR_ICON;
+ SetRect(&r2, LVIR_ICON, 0, 0, 0);
r = SendMessageA(hwnd, LVM_GETITEMRECT, 0, (LPARAM) &r2);
expect(1, r);
- ok(!memcmp(&r1, &r2, sizeof r1), "rectangle should be the same\n");
+ ok(EqualRect(&r1, &r2), "rectangle should be the same\n");
DestroyWindow(hwnd);
}
r = SendMessageA(hwnd, LVM_GETITEMA, 0, (LPARAM) &item);
expect(1, r);
ok(item.state & LVIS_SELECTED, "Expected LVIS_SELECTED\n");
- SendMessageA(hwnd, LVM_DELETEITEM, 0, 0);
+ r = SendMessageA(hwnd, LVM_DELETEITEM, 0, 0);
+ ok(r, "got %d\n", r);
/* LVIS_SELECTED with zero stateMask */
/* set */
r = SendMessageA(hwnd, LVM_GETITEMA, 0, (LPARAM) &item);
expect(1, r);
ok(item.state & LVIS_FOCUSED, "Expected LVIS_FOCUSED\n");
- SendMessageA(hwnd, LVM_DELETEITEM, 0, 0);
+ r = SendMessageA(hwnd, LVM_DELETEITEM, 0, 0);
+ ok(r, "got %d\n", r);
/* LVIS_CUT with LVIS_FOCUSED stateMask */
/* set */
r = SendMessageA(hwnd, LVM_GETITEMA, 0, (LPARAM) &item);
expect(1, r);
ok(item.state & LVIS_CUT, "Expected LVIS_CUT\n");
- SendMessageA(hwnd, LVM_DELETEITEM, 0, 0);
+ r = SendMessageA(hwnd, LVM_DELETEITEM, 0, 0);
+ ok(r, "got %d\n", r);
/* Insert an item with just a param */
memset (&item, 0xcc, sizeof (item));
10, 10, 100, 200, hwndparent, NULL, NULL, NULL);
ok(hwnd != NULL, "failed to create listview window\n");
+ rc = SendMessageA(hwnd, LVM_DELETECOLUMN, -1, 0);
+ ok(!rc, "got %d\n", rc);
+
+ rc = SendMessageA(hwnd, LVM_DELETECOLUMN, 0, 0);
+ ok(!rc, "got %d\n", rc);
+
/* Add a column with no mask */
memset(&column, 0xcc, sizeof(column));
column.mask = 0;
clr = GetBkColor(nmlvcd->nmcd.hdc);
ok(nmlvcd->clrTextBk == CLR_DEFAULT, "got 0x%x\n", nmlvcd->clrTextBk);
ok(nmlvcd->clrText == RGB(0, 255, 0), "got 0x%x\n", nmlvcd->clrText);
- if (nmlvcd->iSubItem)
- todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr);
- else
- ok(clr == c0ffee, "clr=%.8x\n", clr);
+ if (!(GetWindowLongW(nmhdr->hwndFrom, GWL_STYLE) & LVS_SHOWSELALWAYS))
+ {
+ todo_wine_if(nmlvcd->iSubItem)
+ ok(clr == c0ffee, "clr=%.8x\n", clr);
+ }
return CDRF_NOTIFYPOSTPAINT;
case CDDS_ITEMPOSTPAINT | CDDS_SUBITEM:
clr = GetBkColor(nmlvcd->nmcd.hdc);
- todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr);
+ if (!(GetWindowLongW(nmhdr->hwndFrom, GWL_STYLE) & LVS_SHOWSELALWAYS))
+ todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr);
ok(nmlvcd->clrTextBk == CLR_DEFAULT, "got 0x%x\n", nmlvcd->clrTextBk);
ok(nmlvcd->clrText == RGB(0, 255, 0), "got 0x%x\n", nmlvcd->clrText);
return CDRF_DODEFAULT;
item_count = SendMessageA(hwnd, LVM_GETITEMCOUNT, 0, 0);
expect(items, item_count);
- for (i = 0; i < 4; i++) {
+ r = SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, -1);
+ ok(r == -1, "got %d\n", r);
+
+ r = SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, 0);
+ ok(r == -1, "got %d\n", r);
+
+ r = SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, 0);
+ ok(r == 0, "got %d\n", r);
+
+ /* out of range index */
+ r = SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, items);
+ ok(r == 0, "got %d\n", r);
+
+ r = SendMessageA(hwnd, LVM_GETSELECTIONMARK, 0, 0);
+ ok(r == 0, "got %d\n", r);
+
+ r = SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, -2);
+ ok(r == 0, "got %d\n", r);
+
+ r = SendMessageA(hwnd, LVM_GETSELECTIONMARK, 0, 0);
+ ok(r == 0, "got %d\n", r);
+
+ for (i = 0; i < sizeof(task_list)/sizeof(task_list[0]); i++) {
DWORD selected_count;
LVITEMA item;
/* deselect all items */
item.state = 0;
item.stateMask = LVIS_SELECTED;
- SendMessageA(hwnd, LVM_SETITEMSTATE, -1, (LPARAM)&item);
+ r = SendMessageA(hwnd, LVM_SETITEMSTATE, -1, (LPARAM)&item);
+ ok(r, "got %d\n", r);
SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, -1);
/* set initial position */
- SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, (task.initPos == -1 ? item_count -1 : task.initPos));
+ r = SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, (task.initPos == -1 ? item_count -1 : task.initPos));
+ ok(r, "got %d\n", r);
item.state = LVIS_SELECTED;
item.stateMask = LVIS_SELECTED;
- SendMessageA(hwnd, LVM_SETITEMSTATE, task.initPos == -1 ? item_count-1 : task.initPos, (LPARAM)&item);
+ r = SendMessageA(hwnd, LVM_SETITEMSTATE, task.initPos == -1 ? item_count-1 : task.initPos, (LPARAM)&item);
+ ok(r, "got %d\n", r);
selected_count = SendMessageA(hwnd, LVM_GETSELECTEDCOUNT, 0, 0);
ok(selected_count == 1, "expected 1, got %d\n", selected_count);
/* select all, check notifications */
item.state = 0;
item.stateMask = LVIS_SELECTED;
- SendMessageA(hwnd, LVM_SETITEMSTATE, -1, (LPARAM)&item);
+ r = SendMessageA(hwnd, LVM_SETITEMSTATE, -1, (LPARAM)&item);
+ ok(r, "got %d\n", r);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
item.state = 0;
item.stateMask = LVIS_SELECTED;
- SendMessageA(hwnd, LVM_SETITEMSTATE, -1, (LPARAM)&item);
+ r = SendMessageA(hwnd, LVM_SETITEMSTATE, -1, (LPARAM)&item);
+ ok(r, "got %d\n", r);
ok_sequence(sequences, PARENT_SEQ_INDEX, change_all_parent_seq,
"deselect all notification", FALSE);
ok_sequence(sequences, PARENT_SEQ_INDEX, changing_all_parent_seq,
"set state all notification 3", FALSE);
- SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, -1);
+ r = SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, -1);
+ ok(r, "got %d\n", r);
for (i = 0; i < 3; i++) {
item.state = LVIS_SELECTED;
item.stateMask = LVIS_SELECTED;
- SendMessageA(hwnd, LVM_SETITEMSTATE, i, (LPARAM)&item);
+ r = SendMessageA(hwnd, LVM_SETITEMSTATE, i, (LPARAM)&item);
+ ok(r, "got %d\n", r);
}
r = SendMessageA(hwnd, LVM_GETSELECTEDCOUNT, 0, 0);
}
r = SendMessageA(hwnd, LVM_GETSELECTEDCOUNT, 0, 0);
expect(3, r);
- SendMessageA(hwnd, LVM_GETSELECTIONMARK, 0, 0);
- expect(3, r);
+ r = SendMessageA(hwnd, LVM_GETSELECTIONMARK, 0, 0);
+ ok(r == -1, "got %d\n", r);
/* select one more */
item.state = LVIS_SELECTED;
item.stateMask = LVIS_SELECTED;
- SendMessageA(hwnd, LVM_SETITEMSTATE, 3, (LPARAM)&item);
+ r = SendMessageA(hwnd, LVM_SETITEMSTATE, 3, (LPARAM)&item);
+ ok(r, "got %d\n", r);
for (i=0;i<3;i++) {
r = SendMessageA(hwnd, LVM_GETITEMSTATE, i, LVIS_SELECTED);
item.stateMask = LVIS_SELECTED;
r = SendMessageA(hwnd, LVM_SETITEMSTATE, -1, (LPARAM)&item);
expect(TRUE, r);
- SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, -1);
+ r = SendMessageA(hwnd, LVM_SETSELECTIONMARK, 0, -1);
+ ok(r == -1, "got %d\n", r);
item.stateMask = LVIS_SELECTED;
item.state = LVIS_SELECTED;
expect(100, rect.left);
expect(250, rect.right);
- SendMessageA(hwnd, LVM_SCROLL, 10, 0);
+ r = SendMessageA(hwnd, LVM_SCROLL, 10, 0);
+ ok(r, "got %d\n", r);
SetRect(&rect, LVIR_BOUNDS, 1, 0, 0);
r = SendMessageA(hwnd, LVM_GETSUBITEMRECT, 0, (LPARAM)&rect);
r = SendMessageA(hwnd, LVM_SETCOLUMNWIDTH, 1, MAKELPARAM(100, 0));
expect(TRUE, r);
- memset(&bounds, 0, sizeof(bounds));
- bounds.left = LVIR_BOUNDS;
+ SetRect(&bounds, LVIR_BOUNDS, 0, 0, 0);
r = SendMessageA(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&bounds);
expect(1, r);
ok(bounds.bottom - bounds.top > 0, "Expected non zero item height\n");
memset(&item, 0, sizeof(item));
item.iItem = 0;
item.iSubItem = 0;
- SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&item);
+ r = SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&item);
+ ok(!r, "got %d\n", r);
r = SendMessageA(hwnd, LVM_SETCOLUMNWIDTH, 0, MAKELPARAM(100, 0));
expect(TRUE, r);
expect(TRUE, r);
ok_sequence(sequences, LISTVIEW_SEQ_INDEX, getitemposition_seq2, "get item position 2", TRUE);
- memset(&rect, 0, sizeof(rect));
- SendMessageA(header, HDM_GETITEMRECT, 0, (LPARAM)&rect);
+ SetRectEmpty(&rect);
+ r = SendMessageA(header, HDM_GETITEMRECT, 0, (LPARAM)&rect);
+ ok(r, "got %d\n", r);
/* some padding? */
expect(2, pt.x);
/* offset by header height */
/* default column width with item added */
hwnd = create_listview_control(LVS_LIST);
memset(&itema, 0, sizeof(itema));
- SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&itema);
+ ret = SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&itema);
+ ok(!ret, "got %d\n", ret);
ret = SendMessageA(hwnd, LVM_GETCOLUMNWIDTH, 0, 0);
height = get_current_font_height(hwnd);
ok((ret / height) >= 6, "got width %d, height %d\n", ret, height);
DestroyWindow(hwnd);
}
+static void test_callback_mask(void)
+{
+ DWORD mask;
+ HWND hwnd;
+ BOOL ret;
+
+ hwnd = create_listview_control(LVS_REPORT);
+
+ ret = SendMessageA(hwnd, LVM_SETCALLBACKMASK, ~0u, 0);
+ ok(ret, "got %d\n", ret);
+
+ ret = SendMessageA(hwnd, LVM_SETCALLBACKMASK, ~0u, 1);
+ ok(ret, "got %d\n", ret);
+
+ mask = SendMessageA(hwnd, LVM_GETCALLBACKMASK, 0, 0);
+ ok(mask == ~0u, "got 0x%08x\n", mask);
+
+ DestroyWindow(hwnd);
+}
+
START_TEST(listview)
{
HMODULE hComctl32;
test_insertitem();
test_header_proc();
test_oneclickactivate();
+ test_callback_mask();
if (!load_v6_module(&ctx_cookie, &hCtx))
{