comctl32/listview: Partial fix for LVM_GETSUBITEMRECT for item == -1.
This commit is contained in:
parent
09d6a6c8c9
commit
457c983ee3
|
@ -5984,6 +5984,24 @@ static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPR
|
||||||
|
|
||||||
if ((infoPtr->dwStyle & LVS_TYPEMASK) != LVS_REPORT) return FALSE;
|
if ((infoPtr->dwStyle & LVS_TYPEMASK) != LVS_REPORT) return FALSE;
|
||||||
|
|
||||||
|
/* special case for header items */
|
||||||
|
if (nItem == -1)
|
||||||
|
{
|
||||||
|
if (lprc->left != LVIR_BOUNDS)
|
||||||
|
{
|
||||||
|
FIXME("Only LVIR_BOUNDS is implemented for header, got %d\n", lprc->left);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infoPtr->hwndHeader)
|
||||||
|
return Header_GetItemRect(infoPtr->hwndHeader, lprc->top, lprc);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memset(lprc, 0, sizeof(RECT));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!LISTVIEW_GetItemPosition(infoPtr, nItem, &Position)) return FALSE;
|
if (!LISTVIEW_GetItemPosition(infoPtr, nItem, &Position)) return FALSE;
|
||||||
|
|
||||||
if (nColumn < 0 || nColumn >= DPA_GetPtrCount(infoPtr->hdpaColumns)) return FALSE;
|
if (nColumn < 0 || nColumn >= DPA_GetPtrCount(infoPtr->hdpaColumns)) return FALSE;
|
||||||
|
|
|
@ -988,7 +988,6 @@ static void test_create(void)
|
||||||
rect.top = 1;
|
rect.top = 1;
|
||||||
rect.right = rect.bottom = -10;
|
rect.right = rect.bottom = -10;
|
||||||
r = SendMessage(hList, LVM_GETSUBITEMRECT, -1, (LPARAM)&rect);
|
r = SendMessage(hList, LVM_GETSUBITEMRECT, -1, (LPARAM)&rect);
|
||||||
todo_wine
|
|
||||||
ok(r != 0, "Expected not-null LRESULT\n");
|
ok(r != 0, "Expected not-null LRESULT\n");
|
||||||
|
|
||||||
hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0);
|
hHeader = (HWND)SendMessage(hList, LVM_GETHEADER, 0, 0);
|
||||||
|
@ -996,11 +995,10 @@ todo_wine
|
||||||
ok(NULL == GetDlgItem(hList, 0), "NULL dialog item expected\n");
|
ok(NULL == GetDlgItem(hList, 0), "NULL dialog item expected\n");
|
||||||
|
|
||||||
expect(0, rect.left);
|
expect(0, rect.left);
|
||||||
todo_wine {
|
|
||||||
expect(0, rect.right);
|
expect(0, rect.right);
|
||||||
expect(0, rect.top);
|
expect(0, rect.top);
|
||||||
expect(0, rect.bottom);
|
expect(0, rect.bottom);
|
||||||
}
|
|
||||||
DestroyWindow(hList);
|
DestroyWindow(hList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1537,22 +1535,23 @@ static void test_subitem_rect(void)
|
||||||
rect.top = 1;
|
rect.top = 1;
|
||||||
rect.right = rect.bottom = 0;
|
rect.right = rect.bottom = 0;
|
||||||
r = SendMessage(hwnd, LVM_GETSUBITEMRECT, -1, (LPARAM)&rect);
|
r = SendMessage(hwnd, LVM_GETSUBITEMRECT, -1, (LPARAM)&rect);
|
||||||
todo_wine{
|
|
||||||
ok(r != 0, "Expected not-null LRESULT\n");
|
ok(r != 0, "Expected not-null LRESULT\n");
|
||||||
expect(100, rect.left);
|
expect(100, rect.left);
|
||||||
expect(250, rect.right);
|
expect(250, rect.right);
|
||||||
|
todo_wine
|
||||||
expect(3, rect.top);
|
expect(3, rect.top);
|
||||||
}
|
|
||||||
rect.left = LVIR_BOUNDS;
|
rect.left = LVIR_BOUNDS;
|
||||||
rect.top = 2;
|
rect.top = 2;
|
||||||
rect.right = rect.bottom = 0;
|
rect.right = rect.bottom = 0;
|
||||||
r = SendMessage(hwnd, LVM_GETSUBITEMRECT, -1, (LPARAM)&rect);
|
r = SendMessage(hwnd, LVM_GETSUBITEMRECT, -1, (LPARAM)&rect);
|
||||||
todo_wine{
|
|
||||||
ok(r != 0, "Expected not-null LRESULT\n");
|
ok(r != 0, "Expected not-null LRESULT\n");
|
||||||
expect(250, rect.left);
|
expect(250, rect.left);
|
||||||
expect(450, rect.right);
|
expect(450, rect.right);
|
||||||
|
todo_wine
|
||||||
expect(3, rect.top);
|
expect(3, rect.top);
|
||||||
}
|
|
||||||
|
|
||||||
DestroyWindow(hwnd);
|
DestroyWindow(hwnd);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue