comctl32/listview: Item horizontal position isn't applied for any item bounds on LVS_REPORT.
This commit is contained in:
parent
d56839f64e
commit
8cf54c5645
|
@ -2158,7 +2158,7 @@ calc_label:
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************/
|
/************************************************************/
|
||||||
/* compute STATEICON bounding box */
|
/* compute SELECT bounding box */
|
||||||
/************************************************************/
|
/************************************************************/
|
||||||
if (doSelectBox)
|
if (doSelectBox)
|
||||||
{
|
{
|
||||||
|
@ -5928,7 +5928,6 @@ 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);
|
||||||
|
|
||||||
|
@ -5963,7 +5962,6 @@ 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)
|
||||||
|
@ -5989,7 +5987,7 @@ static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((uView == LVS_REPORT) && (type == LVIR_BOUNDS))
|
if (uView == LVS_REPORT)
|
||||||
OffsetRect(lprc, Origin.x, Position.y + Origin.y);
|
OffsetRect(lprc, Origin.x, Position.y + Origin.y);
|
||||||
else
|
else
|
||||||
OffsetRect(lprc, Position.x + Origin.x, Position.y + Origin.y);
|
OffsetRect(lprc, Position.x + Origin.x, Position.y + Origin.y);
|
||||||
|
|
|
@ -2597,6 +2597,8 @@ static void test_columnscreation(void)
|
||||||
static void test_getitemrect(void)
|
static void test_getitemrect(void)
|
||||||
{
|
{
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
|
HIMAGELIST himl;
|
||||||
|
HBITMAP hbm;
|
||||||
RECT rect;
|
RECT rect;
|
||||||
DWORD r;
|
DWORD r;
|
||||||
LVITEMA item;
|
LVITEMA item;
|
||||||
|
@ -2650,7 +2652,24 @@ 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);
|
||||||
/* padding */
|
/* padding */
|
||||||
todo_wine expect(2, rect.left);
|
expect(2, rect.left);
|
||||||
|
|
||||||
|
rect.left = LVIR_LABEL;
|
||||||
|
rect.right = rect.top = rect.bottom = -1;
|
||||||
|
r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&rect);
|
||||||
|
expect(TRUE, r);
|
||||||
|
/* padding, column width */
|
||||||
|
expect(2, rect.left);
|
||||||
|
expect(50, rect.right);
|
||||||
|
|
||||||
|
/* no icons attached */
|
||||||
|
rect.left = LVIR_ICON;
|
||||||
|
rect.right = rect.top = rect.bottom = -1;
|
||||||
|
r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&rect);
|
||||||
|
expect(TRUE, r);
|
||||||
|
/* padding */
|
||||||
|
expect(2, rect.left);
|
||||||
|
expect(2, rect.right);
|
||||||
|
|
||||||
/* change order */
|
/* change order */
|
||||||
order[0] = 1; order[1] = 0;
|
order[0] = 1; order[1] = 0;
|
||||||
|
@ -2677,6 +2696,51 @@ static void test_getitemrect(void)
|
||||||
/* column width + padding */
|
/* column width + padding */
|
||||||
todo_wine expect(102, rect.left);
|
todo_wine expect(102, rect.left);
|
||||||
|
|
||||||
|
/* back to initial order */
|
||||||
|
order[0] = 0; order[1] = 1;
|
||||||
|
r = SendMessage(hwnd, LVM_SETCOLUMNORDERARRAY, 2, (LPARAM)&order);
|
||||||
|
expect(TRUE, r);
|
||||||
|
|
||||||
|
/* state icons */
|
||||||
|
himl = ImageList_Create(16, 16, 0, 2, 2);
|
||||||
|
ok(himl != NULL, "failed to create imagelist\n");
|
||||||
|
hbm = CreateBitmap(16, 16, 1, 1, NULL);
|
||||||
|
ok(hbm != NULL, "failed to create bitmap\n");
|
||||||
|
r = ImageList_Add(himl, hbm, 0);
|
||||||
|
ok(r == 0, "should be zero\n");
|
||||||
|
hbm = CreateBitmap(16, 16, 1, 1, NULL);
|
||||||
|
ok(hbm != NULL, "failed to create bitmap\n");
|
||||||
|
r = ImageList_Add(himl, hbm, 0);
|
||||||
|
ok(r == 1, "should be one\n");
|
||||||
|
|
||||||
|
r = SendMessage(hwnd, LVM_SETIMAGELIST, LVSIL_STATE, (LPARAM)himl);
|
||||||
|
ok(r == 0, "should return zero\n");
|
||||||
|
|
||||||
|
item.mask = LVIF_STATE;
|
||||||
|
item.state = INDEXTOSTATEIMAGEMASK(1);
|
||||||
|
item.stateMask = LVIS_STATEIMAGEMASK;
|
||||||
|
item.iItem = 0;
|
||||||
|
item.iSubItem = 0;
|
||||||
|
r = SendMessage(hwnd, LVM_SETITEM, 0, (LPARAM)&item);
|
||||||
|
expect(TRUE, r);
|
||||||
|
|
||||||
|
/* icon bounds */
|
||||||
|
rect.left = LVIR_ICON;
|
||||||
|
rect.right = rect.top = rect.bottom = -1;
|
||||||
|
r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&rect);
|
||||||
|
expect(TRUE, r);
|
||||||
|
/* padding + stateicon width */
|
||||||
|
expect(18, rect.left);
|
||||||
|
expect(18, rect.right);
|
||||||
|
/* label bounds */
|
||||||
|
rect.left = LVIR_LABEL;
|
||||||
|
rect.right = rect.top = rect.bottom = -1;
|
||||||
|
r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM)&rect);
|
||||||
|
expect(TRUE, r);
|
||||||
|
/* padding + stateicon width -> column width */
|
||||||
|
expect(18, rect.left);
|
||||||
|
expect(50, rect.right);
|
||||||
|
|
||||||
DestroyWindow(hwnd);
|
DestroyWindow(hwnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue