treeview: collapse notifications
Huw D M Davies
h.davies1 at physics.ox.ac.uk
Thu Nov 20 17:30:32 CST 2003
Huw Davies <huw at codeweavers.com>
We need to send TVN_EXPAND* on collapsing either when the user has
initiated it with the mouse/keybaord or in response to a TVM_EXPAND
when the state is not TVIS_EXPANDEDONCE. This brings the logic into
line with TREEVIEW_Expand.
Save the item's cChildren member when deleting children in response to
TVE_COLLAPSERESET
Index: dlls/comctl32/treeview.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/treeview.c,v
retrieving revision 1.132
diff -u -r1.132 treeview.c
--- dlls/comctl32/treeview.c 20 Nov 2003 04:19:59 -0000 1.132
+++ dlls/comctl32/treeview.c 20 Nov 2003 23:24:54 -0000
@@ -3134,7 +3134,7 @@
if (!(wineItem->state & TVIS_EXPANDED))
return FALSE;
- if (bUser)
+ if (bUser || !(wineItem->state & TVIS_EXPANDEDONCE))
TREEVIEW_SendExpanding(infoPtr, wineItem, action);
if (wineItem->firstChild == NULL)
@@ -3142,7 +3142,7 @@
wineItem->state &= ~TVIS_EXPANDED;
- if (bUser)
+ if (bUser || !(wineItem->state & TVIS_EXPANDEDONCE))
TREEVIEW_SendExpanded(infoPtr, wineItem, action);
bSetSelection = (infoPtr->selectedItem != NULL
@@ -3153,9 +3153,11 @@
if (bRemoveChildren)
{
+ INT old_cChildren = wineItem->cChildren;
TRACE("TVE_COLLAPSERESET\n");
wineItem->state &= ~TVIS_EXPANDEDONCE;
TREEVIEW_RemoveAllChildren(infoPtr, wineItem);
+ wineItem->cChildren = old_cChildren;
}
if (wineItem->firstChild)
More information about the wine-patches
mailing list