From 4a8e33954eeddf090774da01bb80f9f852cfefc4 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Fri, 21 Nov 2003 21:30:20 +0000 Subject: [PATCH] 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. --- dlls/comctl32/treeview.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c index 2a025eb7ef6..833bfe8d85f 100644 --- a/dlls/comctl32/treeview.c +++ b/dlls/comctl32/treeview.c @@ -3134,7 +3134,7 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, 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 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, 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 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, 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)