2009/4/15 Florian Köberle <florian(a)fkoeberle.de>:
--- dlls/comctl32/tests/treeview.c | 80 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 80 insertions(+), 0 deletions(-)
diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c index 5f310b5..7d9fcfa 100644 --- a/dlls/comctl32/tests/treeview.c +++ b/dlls/comctl32/tests/treeview.c @@ -748,6 +748,84 @@ static LRESULT CALLBACK MyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lPa return 0L; }
+static void TestExpandInvisible(void) +{ + static CHAR nodeRText[] = "R", + nodeIText[] = "I", + nodeIIText[] = "II", + node1Text[] = "1", + node2Text[] = "2"; + TVINSERTSTRUCTA ins; + HTREEITEM nodeR; + HTREEITEM nodeI; + HTREEITEM nodeII; + HTREEITEM node1; + HTREEITEM node2; + RECT dummyRect; + BOOL nodeIVisible; + BOOL nodeIIVisible; + BOOL node1Visible; + BOOL node2Visible; + HWND window = CreateWindowExA(0, "MyTestWnd", "treeview: TestExpandInvisible", WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, 130, 105, NULL, NULL, GetModuleHandleA(NULL), 0); + + HWND tree = CreateWindowExA(WS_EX_CLIENTEDGE, WC_TREEVIEWA, NULL, WS_CHILD|WS_VISIBLE| + TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS|TVS_EDITLABELS, + 0, 0, 120, 100, window, (HMENU)100, GetModuleHandleA(0), 0); + + + ins.hParent = TVI_ROOT; + ins.hInsertAfter = TVI_ROOT; + U(ins).item.mask = TVIF_TEXT; + U(ins).item.pszText = nodeRText; + nodeR = TreeView_InsertItem(tree, &ins); + assert(nodeR); + + ins.hInsertAfter = TVI_LAST; + U(ins).item.mask = TVIF_TEXT; + ins.hParent = nodeR; + + U(ins).item.pszText = nodeIText; + nodeI = TreeView_InsertItem(tree, &ins); + assert(nodeI); + U(ins).item.pszText = nodeIIText; + nodeII = TreeView_InsertItem(tree, &ins); + assert(nodeII); + + ins.hParent = nodeI; + + U(ins).item.pszText = node1Text; + node1 = TreeView_InsertItem(tree, &ins); + assert(node1); + U(ins).item.pszText = node2Text; + node2 = TreeView_InsertItem(tree, &ins); + assert(node1); + + nodeIVisible = TreeView_GetItemRect(tree, nodeI, &dummyRect, FALSE); + ok(!nodeIVisible, "Node I should not be visible.\n"); + node1Visible = TreeView_GetItemRect(tree, node1, &dummyRect, FALSE); + ok(!node1Visible, "Node 1 should not be visible.\n"); + node2Visible = TreeView_GetItemRect(tree, node2, &dummyRect, FALSE); + ok(!node2Visible, "Node 2 should not be visible.\n"); + nodeIIVisible = TreeView_GetItemRect(tree, nodeII, &dummyRect, FALSE); + ok(!nodeIIVisible, "Node II should not be visible.\n"); + + ok(TreeView_Expand(tree, nodeI, TVE_EXPAND), "Expand of node I failed.\n"); + + nodeIVisible = TreeView_GetItemRect(tree, nodeI, &dummyRect, FALSE); + ok(!nodeIVisible, "Node I should not be visible.\n"); + node1Visible = TreeView_GetItemRect(tree, node1, &dummyRect, FALSE); +todo_wine + ok(!node1Visible, "Node 1 should not be visible.\n"); + node2Visible = TreeView_GetItemRect(tree, node2, &dummyRect, FALSE); +todo_wine + ok(!node2Visible, "Node 2 should not be visible.\n"); + nodeIIVisible = TreeView_GetItemRect(tree, nodeII, &dummyRect, FALSE); +todo_wine + ok(!nodeIIVisible, "Node II should not be visible.\n"); +} + + START_TEST(treeview) { HMODULE hComctl32; @@ -819,4 +897,6 @@ START_TEST(treeview) TranslateMessage(&msg); DispatchMessageA(&msg); } + + TestExpandInvisible(); } -- 1.5.4.3
Hi Florian, I think you should use already created dialog and treeview. Place your new function just after TestCallback(), clear tree view and fill it, then just test visibility of expandable items. -- Nicolas Le Cam