ListView Part2

Dimitrie O. Paun dpaun at rogers.com
Fri Mar 14 08:02:48 CST 2003


On March 14, 2003 02:22 am, Vitaliy Margolen wrote:
> -    INT cy = HIWORD(spacing), cx = LOWORD(spacing);
> +    signed short int cy = HIWORD(spacing), cx = LOWORD(spacing);

Good spotting! An alternative fix is to us SHIWORD() and SLOWORD() instead.

But since we're here, the pattern is to decode this sort of thing
directly in LISTVIEW_WindowProc(), so let's do just that:

ChangeLog
  Spacing information is signed (debugged and fixed by Vitaliy Margolen).
  Decode spacing information in the window procedure.
  Some spelling fixes.

Index: dlls/comctl32/listview.c
===================================================================
RCS file: /var/cvs/wine/dlls/comctl32/listview.c,v
retrieving revision 1.343
diff -u -r1.343 listview.c
--- dlls/comctl32/listview.c	7 Mar 2003 20:35:30 -0000	1.343
+++ dlls/comctl32/listview.c	14 Mar 2003 13:59:57 -0000
@@ -937,7 +937,7 @@
  *   - a special item to deal with
  *   - simple range, or composite range
  *   - empty range.
- * If find bugs, or want to add features, please make sure you
+ * If you find bugs, or want to add features, please make sure you
  * always check/modify *both* iterator_prev, and iterator_next.
  */
 
@@ -1249,7 +1249,7 @@
     return LISTVIEW_GetItemT(infoPtr, lpLVItem, TRUE);
 }
 
-/* Listview invlaidation functions: use _only_ these function to invalidate */
+/* Listview invalidation functions: use _only_ these functions to invalidate */
 
 static inline BOOL is_redrawing(LISTVIEW_INFO *infoPtr)
 {
@@ -6478,12 +6478,13 @@
  *
  * PARAMETER(S):
  * [I] infoPtr : valid pointer to the listview structure
- * [I] spacing : MAKELONG(cx, cy)
+ * [I] cx : horizontal spacing (-1 = system spacing, 0 = autosize)
+ * [I] cy : vertical spacing (-1 = system spacing, 0 = autosize)
  *
  * RETURN:
  *   MAKELONG(oldcx, oldcy)
  */
-static DWORD LISTVIEW_SetIconSpacing(LISTVIEW_INFO *infoPtr, DWORD spacing)
+static DWORD LISTVIEW_SetIconSpacing(LISTVIEW_INFO *infoPtr, INT cx, INT cy)
 {
     INT cy = HIWORD(spacing), cx = LOWORD(spacing);
     DWORD oldspacing = MAKELONG(infoPtr->iconSpacing.cx, infoPtr->iconSpacing.cy);
@@ -6567,7 +6568,7 @@
         himlOld = infoPtr->himlNormal;
         infoPtr->himlNormal = himl;
         if (uView == LVS_ICON) set_icon_size(&infoPtr->iconSize, himl, FALSE);
-        LISTVIEW_SetIconSpacing(infoPtr, 0);
+        LISTVIEW_SetIconSpacing(infoPtr, 0, 0);
     break;
 
     case LVSIL_SMALL:
@@ -8298,7 +8299,7 @@
             {
 	  	TRACE("icon old size=(%ld,%ld), new size=(%ld,%ld)\n",
 		      oldIconSize.cx, oldIconSize.cy, infoPtr->iconSize.cx, infoPtr->iconSize.cy);
-	        LISTVIEW_SetIconSpacing(infoPtr, 0);
+	        LISTVIEW_SetIconSpacing(infoPtr, 0, 0);
             }
         }
         else if (uNewView == LVS_REPORT)
@@ -8620,7 +8621,7 @@
     return LISTVIEW_SetHoverTime(infoPtr, (DWORD)wParam);
 
   case LVM_SETICONSPACING:
-    return LISTVIEW_SetIconSpacing(infoPtr, (DWORD)lParam);
+    return LISTVIEW_SetIconSpacing(infoPtr, SLOWORD(lParam), SHIWORD(lParam));
 
   case LVM_SETIMAGELIST:
     return (LRESULT)LISTVIEW_SetImageList(infoPtr, (INT)wParam, (HIMAGELIST)lParam);


-- 
Dimi.




More information about the wine-devel mailing list