Daniel Jelinski : comctl32: Do not send TVN_ITEMEXPANDING when expanding item with no children.
Module: wine Branch: master Commit: 9933f5e44639c5a3ca05c6ebe84032d5884573d1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9933f5e44639c5a3ca05c6ebe8... Author: Daniel Jelinski <djelinski1(a)gmail.com> Date: Thu Sep 27 21:06:48 2012 +0200 comctl32: Do not send TVN_ITEMEXPANDING when expanding item with no children. --- dlls/comctl32/tests/treeview.c | 7 ++++++- dlls/comctl32/treeview.c | 10 +++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c index baf0e02..1021648 100644 --- a/dlls/comctl32/tests/treeview.c +++ b/dlls/comctl32/tests/treeview.c @@ -1393,6 +1393,11 @@ static void test_expandnotify(void) ret = SendMessageA(hTree, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hRoot); expect(TRUE, ret); + flush_sequences(sequences, NUM_MSG_SEQUENCES); + ret = SendMessageA(hTree, TVM_EXPAND, TVE_COLLAPSE, (LPARAM)hRoot); + todo_wine expect(FALSE, ret); + ok_sequence(sequences, PARENT_SEQ_INDEX, empty_seq, "no collapse notifications", FALSE); + g_get_from_expand = TRUE; /* expand */ flush_sequences(sequences, NUM_MSG_SEQUENCES); @@ -1481,7 +1486,7 @@ static void test_expandnotify(void) flush_sequences(sequences, NUM_MSG_SEQUENCES); ret = SendMessageA(hTree, WM_KEYDOWN, VK_ADD, 0); expect(FALSE, ret); - ok_sequence(sequences, PARENT_SEQ_INDEX, parent_expand_empty_kb_seq, "expand node with no children", TRUE); + ok_sequence(sequences, PARENT_SEQ_INDEX, parent_expand_empty_kb_seq, "expand node with no children", FALSE); DestroyWindow(hTree); } diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c index 032f49e..3f6b457 100644 --- a/dlls/comctl32/treeview.c +++ b/dlls/comctl32/treeview.c @@ -3237,10 +3237,10 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, TRACE("TVE_COLLAPSE %p %s\n", item, TREEVIEW_ItemName(item)); - if (!(item->state & TVIS_EXPANDED)) + if (!TREEVIEW_HasChildren(infoPtr, item)) return FALSE; - if (bUser || !(item->state & TVIS_EXPANDEDONCE)) + if (bUser) TREEVIEW_SendExpanding(infoPtr, item, action); if (item->firstChild == NULL) @@ -3248,7 +3248,7 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, item->state &= ~TVIS_EXPANDED; - if (bUser || !(item->state & TVIS_EXPANDEDONCE)) + if (bUser) TREEVIEW_SendExpanded(infoPtr, item, action); bSetSelection = (infoPtr->selectedItem != NULL @@ -3344,8 +3344,8 @@ TREEVIEW_Expand(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, TRACE("(%p, %p, partial=%d, %d\n", infoPtr, item, partial, user); - if (item->state & TVIS_EXPANDED) - return TRUE; + if (!TREEVIEW_HasChildren(infoPtr, item)) + return FALSE; tmpItem = item; nextItem = NULL; while (tmpItem)
participants (1)
-
Alexandre Julliard