Daniel Jelinski : comctl32: Do not send TVN_ITEMEXPANDING when expanding item with no children.

Alexandre Julliard julliard at winehq.org
Tue Oct 16 15:27:46 CDT 2012


Module: wine
Branch: master
Commit: 9933f5e44639c5a3ca05c6ebe84032d5884573d1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9933f5e44639c5a3ca05c6ebe84032d5884573d1

Author: Daniel Jelinski <djelinski1 at 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)




More information about the wine-cvs mailing list