Daniel Jelinski : comctl32: Fix notifications and return value when collapsing already collapsed node.
Module: wine Branch: master Commit: 0b6cf6e46a02085ae97f943f9c2ce2db9a0a0caf URL: http://source.winehq.org/git/wine.git/?a=commit;h=0b6cf6e46a02085ae97f943f9c... Author: Daniel Jelinski <djelinski1(a)gmail.com> Date: Fri Oct 12 22:50:23 2012 +0200 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 1021648..c60ed4d 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 3f6b457..3b2f747 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
participants (1)
-
Alexandre Julliard