Listview Z3

Dimitrie O. Paun dpaun at rogers.com
Fri Oct 25 10:19:58 CDT 2002


http://cezar.kappa.ro/bmw/galben/photos.html

ChangeLog
  Cleanup, and simplification of UpdateSize.

--- dlls/comctl32/listview.c.Z2	Fri Oct 25 10:32:52 2002
+++ dlls/comctl32/listview.c	Fri Oct 25 11:15:51 2002
@@ -375,7 +375,7 @@
 static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *, LPLVITEMW, BOOL);
 static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *);
 static void LISTVIEW_SetSelection(LISTVIEW_INFO *, INT);
-static BOOL LISTVIEW_UpdateSize(LISTVIEW_INFO *);
+static void LISTVIEW_UpdateSize(LISTVIEW_INFO *);
 static HWND LISTVIEW_EditLabelT(LISTVIEW_INFO *, INT, BOOL);
 static LRESULT LISTVIEW_Command(LISTVIEW_INFO *, WPARAM, LPARAM);
 static BOOL LISTVIEW_SortItems(LISTVIEW_INFO *, PFNLVCOMPARE, LPARAM);
@@ -8059,9 +8059,12 @@
  */
 static LRESULT LISTVIEW_Size(LISTVIEW_INFO *infoPtr, int Width, int Height)
 {
+    RECT rcOld = infoPtr->rcList;
+
     TRACE("(width=%d, height=%d)\n", Width, Height);
 
-    if (!LISTVIEW_UpdateSize(infoPtr)) return 0;
+    LISTVIEW_UpdateSize(infoPtr);
+    if (EqualRect(&rcOld, &infoPtr->rcList)) return 0;
   
     /* do not bother with display related stuff if we're not redrawing */ 
     if (!is_redrawing(infoPtr)) return 0;
@@ -8084,58 +8087,41 @@
  * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
- * Zero if no size change
- * 1 of size changed
+ *  None
  */
-static BOOL LISTVIEW_UpdateSize(LISTVIEW_INFO *infoPtr)
+static void LISTVIEW_UpdateSize(LISTVIEW_INFO *infoPtr)
 {
-  UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
-  RECT rcList;
-  RECT rcOld;
+    UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
 
-  GetClientRect(infoPtr->hwndSelf, &rcList);
-  CopyRect(&rcOld,&(infoPtr->rcList));
-  infoPtr->rcList.left = 0;
-  infoPtr->rcList.right = max(rcList.right - rcList.left, 1);
-  infoPtr->rcList.top = 0;
-  infoPtr->rcList.bottom = max(rcList.bottom - rcList.top, 1);
+    GetClientRect(infoPtr->hwndSelf, &infoPtr->rcList);
 
-  if (uView == LVS_LIST)
-  {
-    /* Apparently the "LIST" style is supposed to have the same
-     * number of items in a column even if there is no scroll bar.
-     * Since if a scroll bar already exists then the bottom is already
-     * reduced, only reduce if the scroll bar does not currently exist.
-     * The "2" is there to mimic the native control. I think it may be
-     * related to either padding or edges.  (GLA 7/2002)
-     */
-    if (!(infoPtr->dwStyle & WS_HSCROLL))
+    if (uView == LVS_LIST)
     {
-      INT nHScrollHeight = GetSystemMetrics(SM_CYHSCROLL);
-      if (infoPtr->rcList.bottom > nHScrollHeight)
-        infoPtr->rcList.bottom -= (nHScrollHeight + 2);
+	/* Apparently the "LIST" style is supposed to have the same
+	 * number of items in a column even if there is no scroll bar.
+	 * Since if a scroll bar already exists then the bottom is already
+	 * reduced, only reduce if the scroll bar does not currently exist.
+	 * The "2" is there to mimic the native control. I think it may be
+	 * related to either padding or edges.  (GLA 7/2002)
+	 */
+    	if (!(infoPtr->dwStyle & WS_HSCROLL))
+	    infoPtr->rcList.bottom -= GetSystemMetrics(SM_CYHSCROLL);
+        infoPtr->rcList.bottom = max (infoPtr->rcList.bottom - 2, 0);
     }
-    else
+    else if (uView == LVS_REPORT)
     {
-      if (infoPtr->rcList.bottom > 2)
-        infoPtr->rcList.bottom -= 2;
-    }
-  }
-  else if (uView == LVS_REPORT)
-  {
-    HDLAYOUT hl;
-    WINDOWPOS wp;
+	HDLAYOUT hl;
+	WINDOWPOS wp;
 
-    hl.prc = &rcList;
-    hl.pwpos = ℘
-    Header_Layout(infoPtr->hwndHeader, &hl);
+	hl.prc = &infoPtr->rcList;
+	hl.pwpos = ℘
+	Header_Layout(infoPtr->hwndHeader, &hl);
 
-    SetWindowPos(wp.hwnd, wp.hwndInsertAfter, wp.x, wp.y, wp.cx, wp.cy, wp.flags);
+	SetWindowPos(wp.hwnd, wp.hwndInsertAfter, wp.x, wp.y, wp.cx, wp.cy, wp.flags);
 
-    if (!(LVS_NOCOLUMNHEADER & infoPtr->dwStyle))
-      infoPtr->rcList.top = max(wp.cy, 0);
-  }
-  return (EqualRect(&rcOld,&(infoPtr->rcList)));
+	if (!(infoPtr->dwStyle & LVS_NOCOLUMNHEADER))
+	    infoPtr->rcList.top = max(wp.cy, 0);
+    }
 }
 
 /***


-- 
Dimi.




More information about the wine-patches mailing list