LVM_GetItemRect does not take text size in account in this case. it more or less fixes owner drawn fixed mode for listview. Fixed a test that does not make much sense in current code. Added also a better trace for Listview_GetColumn. ChangeLog: * dlls/comctl32/listview.c LVM_GetItemRect should not take text size in account for LVIR_LABEL in report mode.
Index: dlls/comctl32/listview.c =================================================================== RCS file: /home/wine/wine/dlls/comctl32/listview.c,v retrieving revision 1.116 diff -u -r1.116 listview.c --- dlls/comctl32/listview.c 2002/02/12 18:42:25 1.116 +++ dlls/comctl32/listview.c 2002/02/16 13:27:52 @@ -493,6 +493,21 @@ return buf; } +static char* debuglvcolumn_t(LPLVCOLUMNW lpColumn, BOOL isW) +{ + static int index = 0; + static char buffers[20][256]; + char* buf = buffers[index++ % 20]; + if (lpColumn == NULL) return "(null)"; + snprintf(buf, 256, "{mask=%x, fmt=%x, cx=%d," + " pszText=%s, cchTextMax=%d, iSubItem=%d}", + lpColumn->mask, lpColumn->fmt, lpColumn->cx, + lpColumn->mask & LVCF_TEXT ? lpColumn->pszText == LPSTR_TEXTCALLBACKW ? "(callback)" : + debugstr_tn(lpColumn->pszText, isW, 80): "", + lpColumn->mask & LVCF_TEXT ? lpColumn->cchTextMax: 0, lpColumn->iSubItem); + return buf; +} + static void LISTVIEW_DumpListview(LISTVIEW_INFO *iP, INT line) { DWORD dwStyle = GetWindowLongW (iP->hwndSelf, GWL_STYLE); @@ -916,9 +931,6 @@ if ((LVS_TYPESTYLEMASK & lStyle) == LVS_NOSORTHEADER) FIXME(" LVS_NOSORTHEADER\n"); - if ((LVS_TYPESTYLEMASK & lStyle) == LVS_OWNERDRAWFIXED) - FIXME(" LVS_OWNERDRAWFIXED\n"); - if (lStyle & LVS_EDITLABELS) FIXME(" LVS_EDITLABELS\n"); @@ -4887,6 +4899,10 @@ if (lpColumn != NULL) { + + TRACE("(hwnd=%x, col=%d, lpColumn=%s, isW=%d)\n", + hwnd, nItem, debuglvcolumn_t(lpColumn, isW), isW); + /* initialize memory */ ZeroMemory(&hdi, sizeof(hdi)); @@ -5670,7 +5686,7 @@ else { bResult = TRUE; - if (uView & LVS_REPORT) + if (uView == LVS_REPORT) nLeftPos = lprc->left = ptItem.x + nIndent; else nLeftPos = lprc->left = ptItem.x; @@ -5683,10 +5699,15 @@ if (infoPtr->himlSmall != NULL) lprc->left += infoPtr->iconSize.cx; - nLabelWidth = LISTVIEW_GetLabelWidth(hwnd, nItem); - nLabelWidth += TRAILING_PADDING; - if (infoPtr->himlSmall) - nLabelWidth += IMAGE_PADDING; + if (uView != LVS_REPORT) + { + nLabelWidth = LISTVIEW_GetLabelWidth(hwnd, nItem); + nLabelWidth += TRAILING_PADDING; + if (infoPtr->himlSmall) + nLabelWidth += IMAGE_PADDING; + } + else + nLabelWidth = LISTVIEW_GetColumnWidth(hwnd, 0)-lprc->left; if (lprc->left + nLabelWidth < nLeftPos + infoPtr->nItemWidth) lprc->right = lprc->left + nLabelWidth; else