comctl32/listview: Offset every but LVIR_BOUNDS rectangles to column bound in details view.

This commit is contained in:
Nikolay Sivov 2009-08-03 02:32:37 +04:00 committed by Alexandre Julliard
parent 021410cf0e
commit ebdf2fd254
1 changed files with 10 additions and 1 deletions

View File

@ -6258,6 +6258,7 @@ static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT
BOOL doLabel = TRUE, oversizedBox = FALSE;
POINT Position, Origin;
LVITEMW lvItem;
LONG mode;
TRACE("(hwnd=%p, nItem=%d, lprc=%p)\n", infoPtr->hwndSelf, nItem, lprc);
@ -6294,6 +6295,8 @@ static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT
if (infoPtr->uView == LV_VIEW_DETAILS && (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT) && lprc->left == LVIR_SELECTBOUNDS)
lprc->left = LVIR_BOUNDS;
mode = lprc->left;
switch(lprc->left)
{
case LVIR_ICON:
@ -6318,7 +6321,13 @@ static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT
}
if (infoPtr->uView == LV_VIEW_DETAILS)
OffsetRect(lprc, Origin.x, Position.y + Origin.y);
{
if (mode != LVIR_BOUNDS)
OffsetRect(lprc, Origin.x + LISTVIEW_GetColumnInfo(infoPtr, 0)->rcHeader.left,
Position.y + Origin.y);
else
OffsetRect(lprc, Origin.x, Position.y + Origin.y);
}
else
OffsetRect(lprc, Position.x + Origin.x, Position.y + Origin.y);