Listview X3
Dimitrie O. Paun
dpaun at rogers.com
Thu Oct 24 00:28:12 CDT 2002
It seems to me, that the listview keeps autoarranging
items even in non-LVS_AUTOARRANGE mode, until one is
placed somewhere explicitly. If you know otherwise,
please let me know.
ChangeLog
Keep autoarranging items until one is moved.
--- dlls/comctl32/listview.c.X2 Thu Oct 24 01:19:04 2002
+++ dlls/comctl32/listview.c Thu Oct 24 01:24:36 2002
@@ -251,6 +251,7 @@
INT ntmHeight; /* From GetTextMetrics from above font */
BOOL bRedraw; /* Turns on/off repaints & invalidations */
BOOL bFirstPaint; /* Flags if the control has never painted before */
+ BOOL bAutoarrange; /* Autoarrange flag when NOT in LVS_AUTOARRANGE */
BOOL bFocus;
INT nFocusedItem;
RECT rcFocus;
@@ -1173,7 +1174,8 @@
{
UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
- return (infoPtr->dwStyle & LVS_AUTOARRANGE) && (uView == LVS_ICON || uView == LVS_SMALLICON);
+ return ((infoPtr->dwStyle & LVS_AUTOARRANGE) || infoPtr->bAutoarrange) &&
+ (uView == LVS_ICON || uView == LVS_SMALLICON);
}
/******** Internal API functions ************************************/
@@ -2056,7 +2058,8 @@
case LVA_SNAPTOGRID: next_pos = LISTVIEW_NextIconPosTop; break; /* FIXME */
default: return FALSE;
}
-
+
+ infoPtr->bAutoarrange = TRUE;
infoPtr->currIconPos.x = infoPtr->currIconPos.y = 0;
for (i = 0; i < infoPtr->nItemCount; i++)
{
@@ -6562,6 +6565,8 @@
pt.x -= Origin.x;
pt.y -= Origin.y;
+ infoPtr->bAutoarrange = FALSE;
+
return LISTVIEW_MoveIconTo(infoPtr, nItem, &pt, FALSE);
}
--
Dimi.
More information about the wine-patches
mailing list