comctl32/listview: LVM_GETITEMRECT: don't offset to item position on LVS_REPORT querying LVIR_BOUNDS.
This commit is contained in:
parent
79ed5e0fac
commit
1a84ca42b2
|
@ -5928,6 +5928,7 @@ static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT
|
||||||
BOOL doLabel = TRUE, oversizedBox = FALSE;
|
BOOL doLabel = TRUE, oversizedBox = FALSE;
|
||||||
POINT Position, Origin;
|
POINT Position, Origin;
|
||||||
LVITEMW lvItem;
|
LVITEMW lvItem;
|
||||||
|
INT type;
|
||||||
|
|
||||||
TRACE("(hwnd=%p, nItem=%d, lprc=%p)\n", infoPtr->hwndSelf, nItem, lprc);
|
TRACE("(hwnd=%p, nItem=%d, lprc=%p)\n", infoPtr->hwndSelf, nItem, lprc);
|
||||||
|
|
||||||
|
@ -5962,6 +5963,7 @@ static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT
|
||||||
lvItem.state = (oversizedBox ? LVIS_FOCUSED : 0);
|
lvItem.state = (oversizedBox ? LVIS_FOCUSED : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type = lprc->left;
|
||||||
if (uView == LVS_REPORT && (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT) && lprc->left == LVIR_SELECTBOUNDS)
|
if (uView == LVS_REPORT && (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT) && lprc->left == LVIR_SELECTBOUNDS)
|
||||||
lprc->left = LVIR_BOUNDS;
|
lprc->left = LVIR_BOUNDS;
|
||||||
switch(lprc->left)
|
switch(lprc->left)
|
||||||
|
@ -5987,7 +5989,10 @@ static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
OffsetRect(lprc, Position.x + Origin.x, Position.y + Origin.y);
|
if ((uView == LVS_REPORT) && (type == LVIR_BOUNDS))
|
||||||
|
OffsetRect(lprc, Origin.x, Origin.y);
|
||||||
|
else
|
||||||
|
OffsetRect(lprc, Position.x + Origin.x, Position.y + Origin.y);
|
||||||
|
|
||||||
TRACE(" rect=%s\n", wine_dbgstr_rect(lprc));
|
TRACE(" rect=%s\n", wine_dbgstr_rect(lprc));
|
||||||
|
|
||||||
|
|
|
@ -2590,11 +2590,9 @@ static void test_getitemrect(void)
|
||||||
r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&rect);
|
r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&rect);
|
||||||
expect(TRUE, r);
|
expect(TRUE, r);
|
||||||
|
|
||||||
/* zero width rectangle */
|
/* zero width rectangle with no padding */
|
||||||
todo_wine {
|
|
||||||
expect(0, rect.left);
|
expect(0, rect.left);
|
||||||
expect(0, rect.right);
|
todo_wine expect(0, rect.right);
|
||||||
}
|
|
||||||
|
|
||||||
insert_column(hwnd, 0);
|
insert_column(hwnd, 0);
|
||||||
insert_column(hwnd, 1);
|
insert_column(hwnd, 1);
|
||||||
|
@ -2615,9 +2613,8 @@ todo_wine {
|
||||||
expect(TRUE, r);
|
expect(TRUE, r);
|
||||||
|
|
||||||
/* still no left padding */
|
/* still no left padding */
|
||||||
todo_wine {
|
|
||||||
expect(0, rect.left);
|
expect(0, rect.left);
|
||||||
}
|
expect(150, rect.right);
|
||||||
|
|
||||||
rect.left = LVIR_SELECTBOUNDS;
|
rect.left = LVIR_SELECTBOUNDS;
|
||||||
rect.right = rect.top = rect.bottom = -1;
|
rect.right = rect.top = rect.bottom = -1;
|
||||||
|
@ -2640,9 +2637,9 @@ todo_wine {
|
||||||
rect.right = rect.top = rect.bottom = -1;
|
rect.right = rect.top = rect.bottom = -1;
|
||||||
r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&rect);
|
r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&rect);
|
||||||
expect(TRUE, r);
|
expect(TRUE, r);
|
||||||
todo_wine expect(0, rect.left);
|
expect(0, rect.left);
|
||||||
/* just width sum */
|
/* just width sum */
|
||||||
todo_wine expect(150, rect.right);
|
expect(150, rect.right);
|
||||||
|
|
||||||
rect.left = LVIR_SELECTBOUNDS;
|
rect.left = LVIR_SELECTBOUNDS;
|
||||||
rect.right = rect.top = rect.bottom = -1;
|
rect.right = rect.top = rect.bottom = -1;
|
||||||
|
|
Loading…
Reference in New Issue