From 985f5ea2210ed90d8a9fa1bc85120d9abedfdfc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Wed, 6 Dec 2023 07:33:45 +0100 Subject: [PATCH] [test] add Test for expand of invisible TreeItem #901 fails on GTK https://github.com/eclipse-platform/eclipse.platform.ui/pull/1331#issuecomment-1841423291 --- .../Test_org_eclipse_swt_widgets_Tree.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_widgets_Tree.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_widgets_Tree.java index 0ad17d53a07..bf8a18f5365 100644 --- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_widgets_Tree.java +++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_widgets_Tree.java @@ -1190,4 +1190,36 @@ public void test_setItemCount_itemCount2() { }); } +@Test +public void test_persistExpandStatusForInvisibleItems() throws InterruptedException { + tree.dispose(); + tree = new Tree(shell, SWT.VIRTUAL); + setWidget(tree); + shell.setLayout(new FillLayout()); + SwtTestUtil.openShell(shell); + int itemCount[] = new int[] {1}; + List dataRequests = new ArrayList<>(); + tree.addListener(SWT.SetData, event -> { + TreeItem item = (TreeItem) event.item; + dataRequests.add(item); + item.setText("item"+itemCount[0]++); + item.setItemCount(1); + }); + TreeItem item1 = new TreeItem(tree, SWT.NONE); + TreeItem item2 = item1.getItem(0); + TreeItem item3 = item2.getItem(0); + assertTrue(dataRequests.remove(item1)); + assertTrue(dataRequests.remove(item2)); + assertTrue(dataRequests.isEmpty()); + item2.setExpanded(true); + assertTrue(dataRequests.isEmpty()); + item1.setExpanded(true); + // Item 3 is now visible and should request data + SwtTestUtil.processEvents(10000, () -> !dataRequests.isEmpty()); + assertFalse(dataRequests.isEmpty()); + assertTrue(item1.getExpanded()); + assertTrue(item2.getExpanded()); + assertFalse(item3.getExpanded()); +} + }