From 0b6cf6e46a02085ae97f943f9c2ce2db9a0a0caf Mon Sep 17 00:00:00 2001 From: Daniel Jelinski Date: Fri, 12 Oct 2012 22:50:23 +0200 Subject: [PATCH] comctl32: Fix notifications and return value when collapsing already collapsed node. --- dlls/comctl32/tests/treeview.c | 2 +- dlls/comctl32/treeview.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c index 1021648bcac..c60ed4d896b 100644 --- a/dlls/comctl32/tests/treeview.c +++ b/dlls/comctl32/tests/treeview.c @@ -1395,7 +1395,7 @@ static void test_expandnotify(void) flush_sequences(sequences, NUM_MSG_SEQUENCES); ret = SendMessageA(hTree, TVM_EXPAND, TVE_COLLAPSE, (LPARAM)hRoot); - todo_wine expect(FALSE, ret); + expect(FALSE, ret); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_seq, "no collapse notifications", FALSE); g_get_from_expand = TRUE; diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c index 3f6b457c4f0..3b2f7475084 100644 --- a/dlls/comctl32/treeview.c +++ b/dlls/comctl32/treeview.c @@ -3234,6 +3234,7 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, RECT scrollRect; LONG scrollDist = 0; TREEVIEW_ITEM *nextItem = NULL, *tmpItem; + BOOL wasExpanded; TRACE("TVE_COLLAPSE %p %s\n", item, TREEVIEW_ItemName(item)); @@ -3246,9 +3247,10 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, if (item->firstChild == NULL) return FALSE; + wasExpanded = (item->state & TVIS_EXPANDED) != 0; item->state &= ~TVIS_EXPANDED; - if (bUser) + if (wasExpanded && bUser) TREEVIEW_SendExpanded(infoPtr, item, action); bSetSelection = (infoPtr->selectedItem != NULL @@ -3329,7 +3331,7 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, bSetFirstVisible ? item : infoPtr->firstVisible, TRUE); - return TRUE; + return wasExpanded; } static BOOL