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

This commit is contained in:
Daniel Jelinski 2012-09-27 21:06:48 +02:00 committed by Alexandre Julliard
parent 6067df7291
commit 9933f5e446
2 changed files with 11 additions and 6 deletions

View File

@ -1393,6 +1393,11 @@ static void test_expandnotify(void)
ret = SendMessageA(hTree, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hRoot); ret = SendMessageA(hTree, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hRoot);
expect(TRUE, ret); 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; g_get_from_expand = TRUE;
/* expand */ /* expand */
flush_sequences(sequences, NUM_MSG_SEQUENCES); flush_sequences(sequences, NUM_MSG_SEQUENCES);
@ -1481,7 +1486,7 @@ static void test_expandnotify(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES); flush_sequences(sequences, NUM_MSG_SEQUENCES);
ret = SendMessageA(hTree, WM_KEYDOWN, VK_ADD, 0); ret = SendMessageA(hTree, WM_KEYDOWN, VK_ADD, 0);
expect(FALSE, ret); 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); DestroyWindow(hTree);
} }

View File

@ -3237,10 +3237,10 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item,
TRACE("TVE_COLLAPSE %p %s\n", item, TREEVIEW_ItemName(item)); TRACE("TVE_COLLAPSE %p %s\n", item, TREEVIEW_ItemName(item));
if (!(item->state & TVIS_EXPANDED)) if (!TREEVIEW_HasChildren(infoPtr, item))
return FALSE; return FALSE;
if (bUser || !(item->state & TVIS_EXPANDEDONCE)) if (bUser)
TREEVIEW_SendExpanding(infoPtr, item, action); TREEVIEW_SendExpanding(infoPtr, item, action);
if (item->firstChild == NULL) if (item->firstChild == NULL)
@ -3248,7 +3248,7 @@ TREEVIEW_Collapse(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item,
item->state &= ~TVIS_EXPANDED; item->state &= ~TVIS_EXPANDED;
if (bUser || !(item->state & TVIS_EXPANDEDONCE)) if (bUser)
TREEVIEW_SendExpanded(infoPtr, item, action); TREEVIEW_SendExpanded(infoPtr, item, action);
bSetSelection = (infoPtr->selectedItem != NULL 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); TRACE("(%p, %p, partial=%d, %d\n", infoPtr, item, partial, user);
if (item->state & TVIS_EXPANDED) if (!TREEVIEW_HasChildren(infoPtr, item))
return TRUE; return FALSE;
tmpItem = item; nextItem = NULL; tmpItem = item; nextItem = NULL;
while (tmpItem) while (tmpItem)