Listview M5

Dimitrie O. Paun dpaun at rogers.com
Tue Oct 8 14:13:10 CDT 2002


ChangeLog
  No need to go through the heavy duty rect computation when in OWNERDRAW.

--- dlls/comctl32/listview.c.M4	Tue Oct  8 15:05:54 2002
+++ dlls/comctl32/listview.c	Tue Oct  8 15:06:03 2002
@@ -1340,7 +1340,8 @@
 	if (uView == LVS_REPORT) doIcon = TRUE;
         else doLabel = TRUE;
     }
-    if (uView == LVS_ICON && infoPtr->bFocus && 
+    if (uView == LVS_ICON && infoPtr->bFocus &&
+	!(infoPtr->dwStyle & LVS_OWNERDRAWFIXED) &&
 	LISTVIEW_GetItemState(infoPtr, nItem, LVIS_FOCUSED))
 	oversizedBox = doLabel = TRUE;
     if (lprcLabel) doLabel = TRUE;
@@ -1411,8 +1412,13 @@
     if (doLabel)
     {
 	SIZE labelSize = { 0, 0 };
-		
-        if (is_textT(lvItem.pszText, TRUE))
+	
+	if (infoPtr->dwStyle & LVS_OWNERDRAWFIXED)
+	{
+	   labelSize.cx = infoPtr->nItemWidth;
+	   labelSize.cy = infoPtr->nItemHeight;
+	}
+	else if (is_textT(lvItem.pszText, TRUE))
         {
     	    HFONT hFont = infoPtr->hFont ? infoPtr->hFont : infoPtr->hDefaultFont;
     	    HDC hdc = GetDC(infoPtr->hwndSelf);
@@ -1450,7 +1456,10 @@
 	    Label.top  = Box.top + ICON_TOP_PADDING_HITABLE +
 		         infoPtr->iconSize.cy + ICON_BOTTOM_PADDING;
 	    Label.right = Label.left + labelSize.cx;
-	    Label.bottom = Label.top + labelSize.cy + HEIGHT_PADDING;
+	    if (infoPtr->dwStyle & LVS_OWNERDRAWFIXED)
+	        Label.bottom = Label.top + infoPtr->nItemHeight;
+	    else
+	        Label.bottom = Label.top + labelSize.cy + HEIGHT_PADDING;
 	}
 	else /* LVS_SMALLICON, LVS_LIST or LVS_REPORT */
 	{




More information about the wine-patches mailing list