[PATCH] Some expand notifications tests
Nikolay Sivov
nsivov at codeweavers.com
Wed Jun 9 16:32:06 CDT 2010
---
dlls/comctl32/tests/treeview.c | 229 +++++++++++++++++++++++++++++++---------
dlls/comctl32/treeview.c | 10 +-
2 files changed, 185 insertions(+), 54 deletions(-)
diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c
index 848d4ca..a0d8e77 100644
--- a/dlls/comctl32/tests/treeview.c
+++ b/dlls/comctl32/tests/treeview.c
@@ -34,12 +34,13 @@
const char *TEST_CALLBACK_TEXT = "callback_text";
-#define NUM_MSG_SEQUENCES 1
+#define NUM_MSG_SEQUENCES 2
#define TREEVIEW_SEQ_INDEX 0
+#define PARENT_SEQ_INDEX 1
#define expect(expected, got) ok(got == expected, "Expected %d, got %d\n", expected, got)
-static struct msg_sequence *MsgSequences[NUM_MSG_SEQUENCES];
+static struct msg_sequence *sequences[NUM_MSG_SEQUENCES];
static const struct message FillRootSeq[] = {
{ TVM_INSERTITEM, sent },
@@ -184,6 +185,16 @@ static const struct message test_get_set_unicodeformat_seq[] = {
{ 0 }
};
+static const struct message parent_expand_seq[] = {
+ { WM_NOTIFY, sent|id, 0, 0, TVN_ITEMEXPANDING },
+ { WM_NOTIFY, sent|id, 0, 0, TVN_ITEMEXPANDED },
+ { 0 }
+};
+
+static const struct message empty_seq[] = {
+ { 0 }
+};
+
static HWND hMainWnd;
static HTREEITEM hRoot, hChild;
@@ -233,7 +244,7 @@ static LRESULT WINAPI TreeviewWndProc(HWND hwnd, UINT message, WPARAM wParam, LP
if (defwndproc_counter) msg.flags |= defwinproc;
msg.wParam = wParam;
msg.lParam = lParam;
- add_message(MsgSequences, TREEVIEW_SEQ_INDEX, &msg);
+ add_message(sequences, TREEVIEW_SEQ_INDEX, &msg);
defwndproc_counter++;
ret = CallWindowProcA(lpOldProc, hwnd, message, wParam, lParam);
@@ -286,7 +297,7 @@ static void test_fillroot(void)
hTree = create_treeview_control();
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
fill_tree(hTree);
@@ -296,7 +307,7 @@ static void test_fillroot(void)
AddItem('B');
assert(hChild);
AddItem('.');
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, FillRootSeq, "FillRoot", FALSE);
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, FillRootSeq, "FillRoot", FALSE);
ok(!strcmp(sequence, "AB."), "Item creation\n");
/* UMLPad 1.15 depends on this being not -1 (I_IMAGECALLBACK) */
@@ -386,7 +397,7 @@ static void test_select(void)
fill_tree(hTree);
/* root-none select tests */
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
r = TreeView_SelectItem(hTree, NULL);
expect(TRUE, r);
Clear();
@@ -407,11 +418,11 @@ static void test_select(void)
expect(TRUE, r);
AddItem('.');
ok(!strcmp(sequence, "1(nR)nR23(Rn)Rn45(nR)nR."), "root-none select test\n");
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, rootnone_select_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, rootnone_select_seq,
"root-none select seq", FALSE);
/* root-child select tests */
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
r = TreeView_SelectItem(hTree, NULL);
expect(TRUE, r);
@@ -433,7 +444,7 @@ static void test_select(void)
expect(TRUE, r);
AddItem('.');
ok(!strcmp(sequence, "1(nR)nR23(RC)RC45(CR)CR."), "root-child select test\n");
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, rootchild_select_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, rootchild_select_seq,
"root-child select seq", FALSE);
DestroyWindow(hTree);
@@ -452,7 +463,7 @@ static void test_getitemtext(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* add an item without TVIF_TEXT mask and pszText == NULL */
ins.hParent = hRoot;
@@ -472,7 +483,7 @@ static void test_getitemtext(void)
SendMessageA( hTree, TVM_GETITEM, 0, (LPARAM)&tvi );
ok(!strcmp(szBuffer, ""), "szBuffer=\"%s\", expected \"\"\n", szBuffer);
ok(SendMessageA(hTree, TVM_DELETEITEM, 0, (LPARAM)hChild), "DeleteItem failed\n");
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, getitemtext_seq, "get item text seq", FALSE);
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, getitemtext_seq, "get item text seq", FALSE);
DestroyWindow(hTree);
}
@@ -489,7 +500,7 @@ static void test_focus(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* This test verifies that when a label is being edited, scrolling
* the treeview does not cause the label to lose focus. To test
@@ -513,7 +524,7 @@ static void test_focus(void)
hEdit = TreeView_EditLabel(hTree, hChild);
ScrollWindowEx(hTree, -10, 0, NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN);
ok(GetFocus() == hEdit, "Edit control should have focus\n");
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, focus_seq, "focus test", TRUE);
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, focus_seq, "focus test", TRUE);
DestroyWindow(hTree);
}
@@ -526,7 +537,7 @@ static void test_get_set_bkcolor(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* If the value is -1, the control is using the system color for the background color. */
crColor = (COLORREF)SendMessage( hTree, TVM_GETBKCOLOR, 0, 0 );
@@ -545,7 +556,7 @@ static void test_get_set_bkcolor(void)
/* Reset the default background */
SendMessage( hTree, TVM_SETBKCOLOR, 0, -1 );
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_bkcolor_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_bkcolor_seq,
"test get set bkcolor", FALSE);
DestroyWindow(hTree);
@@ -559,7 +570,7 @@ static void test_get_set_imagelist(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Test a NULL HIMAGELIST */
SendMessage( hTree, TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)hImageList );
@@ -568,7 +579,7 @@ static void test_get_set_imagelist(void)
/* TODO: Test an actual image list */
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_imagelist_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_imagelist_seq,
"test get imagelist", FALSE);
DestroyWindow(hTree);
@@ -584,7 +595,7 @@ static void test_get_set_indent(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Finding the minimum indent */
SendMessage( hTree, TVM_SETINDENT, 0, 0 );
@@ -596,7 +607,7 @@ static void test_get_set_indent(void)
ulIndent = (DWORD)SendMessage( hTree, TVM_GETINDENT, 0, 0 );
ok(ulIndent == ulMoreThanTwiceMin, "Indent reported as %d, expected %d\n", ulIndent, ulMoreThanTwiceMin);
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_indent_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_indent_seq,
"test get set indent", FALSE);
DestroyWindow(hTree);
@@ -610,13 +621,13 @@ static void test_get_set_insertmark(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
SendMessage( hTree, TVM_SETINSERTMARKCOLOR, 0, crColor );
crColor = (COLORREF)SendMessage( hTree, TVM_GETINSERTMARKCOLOR, 0, 0 );
ok(crColor == RGB(0,0,0), "Insert mark color reported as 0x%.8x, expected 0x00000000\n", crColor);
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_insertmarkcolor_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_insertmarkcolor_seq,
"test get set insertmark color", FALSE);
DestroyWindow(hTree);
@@ -632,7 +643,7 @@ static void test_get_set_item(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Test the root item */
tviRoot.hItem = hRoot;
@@ -654,7 +665,7 @@ static void test_get_set_item(void)
strncpy(szBuffer, "Root", nBufferSize);
SendMessage( hTree, TVM_SETITEM, 0, (LPARAM)&tviRoot );
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_item_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_item_seq,
"test get set item", FALSE);
DestroyWindow(hTree);
@@ -669,7 +680,7 @@ static void test_get_set_itemheight(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Assuming default height to begin with */
ulOldHeight = (int) SendMessage( hTree, TVM_GETITEMHEIGHT, 0, 0 );
@@ -689,7 +700,7 @@ static void test_get_set_itemheight(void)
ulNewHeight = (int) SendMessage( hTree, TVM_GETITEMHEIGHT, 0, 0 );
ok(ulNewHeight == 8, "Uneven height not set properly, reported %d, expected %d\n", ulNewHeight, 8);
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_itemheight_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_itemheight_seq,
"test get set item height", FALSE);
DestroyWindow(hTree);
@@ -704,13 +715,13 @@ static void test_get_set_scrolltime(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
SendMessage( hTree, TVM_SETSCROLLTIME, ulExpectedTime, 0 );
ulTime = (int)SendMessage( hTree, TVM_GETSCROLLTIME, 0, 0 );
ok(ulTime == ulExpectedTime, "Scroll time reported as %d, expected %d\n", ulTime, ulExpectedTime);
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_scrolltime_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_scrolltime_seq,
"test get set scroll time", FALSE);
DestroyWindow(hTree);
@@ -725,7 +736,7 @@ static void test_get_set_textcolor(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
crColor = (COLORREF)SendMessage( hTree, TVM_GETTEXTCOLOR, 0, 0 );
ok(crColor == -1, "Default text color reported as 0x%.8x\n", crColor);
@@ -743,7 +754,7 @@ static void test_get_set_textcolor(void)
/* Reset the default text color */
SendMessage( hTree, TVM_SETTEXTCOLOR, 0, CLR_NONE );
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_textcolor_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_textcolor_seq,
"test get set text color", FALSE);
DestroyWindow(hTree);
@@ -758,7 +769,7 @@ static void test_get_set_tooltips(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* show even WS_POPUP treeview don't send NM_TOOLTIPSCREATED */
hPopupTreeView = CreateWindow(WC_TREEVIEW, NULL, WS_POPUP|WS_VISIBLE, 0, 0, 100, 100, hMainWnd, NULL, NULL, NULL);
@@ -769,7 +780,7 @@ static void test_get_set_tooltips(void)
hwndLastToolTip = (HWND)SendMessage( hTree, TVM_GETTOOLTIPS, 0, 0 );
ok(hwndLastToolTip == NULL, "NULL tool tip, reported as 0x%p, expected 0.\n", hwndLastToolTip);
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_tooltips_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_tooltips_seq,
"test get set tooltips", TRUE);
/* TODO: Add a test of an actual tooltip */
@@ -785,7 +796,7 @@ static void test_get_set_unicodeformat(void)
hTree = create_treeview_control();
fill_tree(hTree);
- flush_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Set to Unicode */
bPreviousSetting = (BOOL)SendMessage( hTree, TVM_SETUNICODEFORMAT, 1, 0 );
@@ -800,54 +811,117 @@ static void test_get_set_unicodeformat(void)
/* Revert to original setting */
SendMessage( hTree, TVM_SETUNICODEFORMAT, bPreviousSetting, 0 );
- ok_sequence(MsgSequences, TREEVIEW_SEQ_INDEX, test_get_set_unicodeformat_seq,
+ ok_sequence(sequences, TREEVIEW_SEQ_INDEX, test_get_set_unicodeformat_seq,
"test get set unicode format", FALSE);
DestroyWindow(hTree);
}
-static LRESULT CALLBACK MyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
+static TVITEMA g_item_expanding, g_item_expanded;
+static BOOL g_get_from_expand;
+
+static LRESULT CALLBACK parent_wnd_proc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
- switch(msg) {
+ static LONG defwndproc_counter = 0;
+ struct message msg;
+ LRESULT ret;
+
+ msg.message = message;
+ msg.flags = sent|wparam|lparam;
+ if (defwndproc_counter) msg.flags |= defwinproc;
+ msg.wParam = wParam;
+ msg.lParam = lParam;
+ if (message == WM_NOTIFY && lParam) msg.id = ((NMHDR*)lParam)->code;
+
+ /* log system messages, except for painting */
+ if (message < WM_USER &&
+ message != WM_PAINT &&
+ message != WM_ERASEBKGND &&
+ message != WM_NCPAINT &&
+ message != WM_NCHITTEST &&
+ message != WM_GETTEXT &&
+ message != WM_GETICON &&
+ message != WM_DEVICECHANGE)
+ {
+ trace("parent: %p, %04x, %08lx, %08lx\n", hWnd, message, wParam, lParam);
+ add_message(sequences, PARENT_SEQ_INDEX, &msg);
+ }
+
+ switch(message) {
case WM_NOTIFY:
{
NMHDR *pHdr = (NMHDR *)lParam;
- ok(pHdr->code != NM_FIRST - 19, "Treeview should not send NM_TOOLTIPSCREATED\n");
- if (pHdr->idFrom == 100) {
+ ok(pHdr->code != NM_TOOLTIPSCREATED, "Treeview should not send NM_TOOLTIPSCREATED\n");
+ if (pHdr->idFrom == 100)
+ {
NMTREEVIEWA *pTreeView = (LPNMTREEVIEWA) lParam;
- switch(pHdr->code) {
+ switch(pHdr->code)
+ {
case TVN_SELCHANGINGA:
AddItem('(');
IdentifyItem(pTreeView->itemOld.hItem);
IdentifyItem(pTreeView->itemNew.hItem);
- return 0;
+ break;
case TVN_SELCHANGEDA:
AddItem(')');
IdentifyItem(pTreeView->itemOld.hItem);
IdentifyItem(pTreeView->itemNew.hItem);
- return 0;
+ break;
case TVN_GETDISPINFOA: {
NMTVDISPINFOA *disp = (NMTVDISPINFOA *)lParam;
if (disp->item.mask & TVIF_TEXT) {
lstrcpyn(disp->item.pszText, TEST_CALLBACK_TEXT, disp->item.cchTextMax);
}
- return 0;
+ break;
}
case TVN_ENDLABELEDIT: return TRUE;
+ case TVN_ITEMEXPANDING:
+ ok(pTreeView->itemNew.mask ==
+ (TVIF_HANDLE | TVIF_SELECTEDIMAGE | TVIF_IMAGE | TVIF_PARAM | TVIF_STATE),
+ "got wrong mask %x\n", pTreeView->itemNew.mask);
+ ok((pTreeView->itemNew.state & TVIS_EXPANDED) == 0,
+ "got wrong state %x\n", pTreeView->itemNew.state);
+ ok(pTreeView->itemOld.mask == 0,
+ "got wrong mask %x\n", pTreeView->itemOld.mask);
+
+ if (g_get_from_expand)
+ {
+ g_item_expanding.mask = TVIF_STATE;
+ g_item_expanding.hItem = hRoot;
+ ret = SendMessageA(pHdr->hwndFrom, TVM_GETITEMA, 0, (LPARAM)&g_item_expanding);
+ ok(ret == TRUE, "got %lu\n", ret);
+ }
+ break;
+ case TVN_ITEMEXPANDED:
+ ok(pTreeView->itemNew.mask & TVIF_STATE, "got wrong mask %x\n", pTreeView->itemNew.mask);
+ ok(pTreeView->itemNew.state & (TVIS_EXPANDED|TVIS_EXPANDEDONCE),
+ "got wrong mask %x\n", pTreeView->itemNew.mask);
+ ok(pTreeView->itemOld.mask == 0,
+ "got wrong mask %x\n", pTreeView->itemOld.mask);
+
+ if (g_get_from_expand)
+ {
+ g_item_expanded.mask = TVIF_STATE;
+ g_item_expanded.hItem = hRoot;
+ ret = SendMessageA(pHdr->hwndFrom, TVM_GETITEMA, 0, (LPARAM)&g_item_expanded);
+ ok(ret == TRUE, "got %lu\n", ret);
+ }
+ break;
}
}
- return 0;
}
-
+
case WM_DESTROY:
PostQuitMessage(0);
break;
-
- default:
- return DefWindowProcA(hWnd, msg, wParam, lParam);
}
- return 0L;
+
+ defwndproc_counter++;
+ ret = DefWindowProcA(hWnd, message, wParam, lParam);
+ defwndproc_counter--;
+
+ return ret;
}
static void test_expandinvisible(void)
@@ -1037,6 +1111,62 @@ static void test_get_insertmarkcolor(void)
DestroyWindow(hTree);
}
+static void test_expandnotify(void)
+{
+ HWND hTree;
+ BOOL ret;
+ TVITEMA item;
+
+ hTree = create_treeview_control();
+ fill_tree(hTree);
+
+ item.hItem = hRoot;
+ item.mask = TVIF_STATE;
+
+ item.state = TVIS_EXPANDED;
+ ret = SendMessageA(hTree, TVM_GETITEMA, 0, (LPARAM)&item);
+ ok(ret == TRUE, "got %d\n", ret);
+ ok((item.state & TVIS_EXPANDED) == 0, "expected collapsed\n");
+
+ /* preselect root node here */
+ ret = SendMessageA(hTree, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hRoot);
+ ok(ret == TRUE, "got %d\n", ret);
+
+ g_get_from_expand = TRUE;
+ /* expand */
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
+ g_item_expanding.state = 0xdeadbeef;
+ g_item_expanded.state = 0xdeadbeef;
+ ret = SendMessageA(hTree, TVM_EXPAND, TVE_EXPAND, (LPARAM)hRoot);
+ ok(ret == TRUE, "got %d\n", ret);
+ ok(g_item_expanding.state == TVIS_SELECTED, "got state on TVN_ITEMEXPANDING 0x%08x\n",
+ g_item_expanding.state);
+ ok(g_item_expanded.state == (TVIS_SELECTED|TVIS_EXPANDED), "got state on TVN_ITEMEXPANDED 0x%08x\n",
+ g_item_expanded.state);
+ ok_sequence(sequences, PARENT_SEQ_INDEX, parent_expand_seq, "expand notifications", FALSE);
+ g_get_from_expand = FALSE;
+
+ /* check that it's expanded */
+ item.state = TVIS_EXPANDED;
+ ret = SendMessageA(hTree, TVM_GETITEMA, 0, (LPARAM)&item);
+ ok(ret == TRUE, "got %d\n", ret);
+ ok((item.state & TVIS_EXPANDED) == TVIS_EXPANDED, "expected expanded\n");
+
+ /* collapse */
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
+ ret = SendMessageA(hTree, TVM_EXPAND, TVE_COLLAPSE, (LPARAM)hRoot);
+ ok(ret == TRUE, "got %d\n", ret);
+ item.state = TVIS_EXPANDED;
+ ret = SendMessageA(hTree, TVM_GETITEMA, 0, (LPARAM)&item);
+ ok(ret == TRUE, "got %d\n", ret);
+ ok((item.state & TVIS_EXPANDED) == 0, "expected collapsed\n");
+ /* all next collapse/expand attempts won't produce any notifications,
+ the only way is to reset with all children removed */
+ ok_sequence(sequences, PARENT_SEQ_INDEX, empty_seq, "collapse after expand notifications", FALSE);
+
+ DestroyWindow(hTree);
+}
+
START_TEST(treeview)
{
HMODULE hComctl32;
@@ -1056,7 +1186,7 @@ START_TEST(treeview)
else
InitCommonControls();
- init_msg_sequences(MsgSequences, NUM_MSG_SEQUENCES);
+ init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
@@ -1067,7 +1197,7 @@ START_TEST(treeview)
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = "MyTestWnd";
- wc.lpfnWndProc = MyWndProc;
+ wc.lpfnWndProc = parent_wnd_proc;
RegisterClassA(&wc);
hMainWnd = CreateWindowExA(0, "MyTestWnd", "Blah", WS_OVERLAPPEDWINDOW,
@@ -1096,6 +1226,7 @@ START_TEST(treeview)
test_expandinvisible();
test_itemedit();
test_treeview_classinfo();
+ test_expandnotify();
PostMessageA(hMainWnd, WM_CLOSE, 0, 0);
while(GetMessageA(&msg,0,0,0)) {
diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c
index 8022556..5adbb30 100644
--- a/dlls/comctl32/treeview.c
+++ b/dlls/comctl32/treeview.c
@@ -2875,7 +2875,7 @@ TREEVIEW_Paint(TREEVIEW_INFO *infoPtr, HDC hdc_ref)
PAINTSTRUCT ps;
RECT rc;
- TRACE("\n");
+ TRACE("(%p %p)\n", infoPtr, hdc_ref);
if (hdc_ref)
{
@@ -3280,7 +3280,7 @@ TREEVIEW_Expand(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem,
RECT scrollRect;
TREEVIEW_ITEM *nextItem, *tmpItem;
- TRACE("\n");
+ TRACE("(%p, %p, partial=%d, %d\n", infoPtr, wineItem, bExpandPartial, bUser);
if (wineItem->state & TVIS_EXPANDED)
return TRUE;
@@ -3422,9 +3422,9 @@ TREEVIEW_ExpandMsg(TREEVIEW_INFO *infoPtr, UINT flag, HTREEITEM wineItem)
if (!TREEVIEW_ValidItem(infoPtr, wineItem))
return 0;
- TRACE("For (%s) item:%d, flags %x, state:%d\n",
- TREEVIEW_ItemName(wineItem), flag,
- TREEVIEW_GetItemIndex(infoPtr, wineItem), wineItem->state);
+ TRACE("For (%s) item:%d, flags 0x%x, state:%d\n",
+ TREEVIEW_ItemName(wineItem), TREEVIEW_GetItemIndex(infoPtr, wineItem),
+ flag, wineItem->state);
switch (flag & TVE_TOGGLE)
{
--
1.5.6.5
--------------030504050801030306060009--
More information about the wine-patches
mailing list