Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Wahlbrink2014-06-23 16:18:33 +0000
committerMickael Istria2019-06-16 19:46:41 +0000
commit506a7aeabced4a8b3ba0b11bf17ab8b63e0155c2 (patch)
tree386e44a8c9e50a98db1361fabf5f84aa21e94421
parent4cdd39c2e91fa6f31b0e8e992f8cd15b876f81b5 (diff)
downloadeclipse.platform.ui-506a7aeabced4a8b3ba0b11bf17ab8b63e0155c2.tar.gz
eclipse.platform.ui-506a7aeabced4a8b3ba0b11bf17ab8b63e0155c2.tar.xz
eclipse.platform.ui-506a7aeabced4a8b3ba0b11bf17ab8b63e0155c2.zip
Bug 54116: Add test and fix for AbstractTreeViewer.expandToLevelI20190616-1800
AbstractTreeViewer.internalExpand always have to expand all parents, if parameter expand is true Change-Id: I29bb2f479ee1ba9af886443227fe96c6b72c82ab Signed-off-by: Stephan Wahlbrink <sw@wahlbrink.eu>
-rw-r--r--bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java26
-rw-r--r--tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/AbstractTreeViewerTest.java16
2 files changed, 30 insertions, 12 deletions
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
index ecc368ca87d..35cf6c8b6dc 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
@@ -1679,21 +1679,23 @@ public abstract class AbstractTreeViewer extends ColumnViewer {
createChildren(pw);
Object element = internalToElement(elementOrPath);
w = internalFindChild(pw, element);
- if (expand && pw instanceof Item) {
- // expand parent items top-down
- Item item = (Item) pw;
- LinkedList<Item> toExpandList = new LinkedList<>();
- while (item != null && !getExpanded(item)) {
- toExpandList.addFirst(item);
- item = getParentItem(item);
- }
- for (Item toExpand : toExpandList) {
- setExpanded(toExpand, true);
- }
- }
}
}
}
+ if (expand && w instanceof Item) {
+ // expand parent items top-down
+ Item item = getParentItem((Item) w);
+ LinkedList<Item> toExpandList = new LinkedList<>();
+ while (item != null) {
+ if (!getExpanded(item)) {
+ toExpandList.addFirst(item);
+ }
+ item = getParentItem(item);
+ }
+ for (Item toExpand : toExpandList) {
+ setExpanded(toExpand, true);
+ }
+ }
return w;
}
diff --git a/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/AbstractTreeViewerTest.java b/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/AbstractTreeViewerTest.java
index 6a95029110a..089e64a3c6e 100644
--- a/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/AbstractTreeViewerTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/viewers/AbstractTreeViewerTest.java
@@ -118,6 +118,22 @@ public abstract class AbstractTreeViewerTest extends StructuredItemViewerTest {
assertNotNull("first2 is visible", fViewer.testFindItem(first2));
}
+ public void testExpandElementAgain() {
+ TestElement first = fRootElement.getFirstChild();
+ TestElement first2 = first.getFirstChild();
+ TestElement first3 = first2.getFirstChild();
+ fTreeViewer.expandToLevel(first3, 0);
+ assertTrue("first is expanded", fTreeViewer.getExpandedState(first));
+ assertTrue("first2 is expanded", fTreeViewer.getExpandedState(first2));
+ assertNotNull("first3 is visible", fViewer.testFindItem(first3));
+
+ fTreeViewer.setExpandedState(first, false);
+ fTreeViewer.expandToLevel(first3, 0);
+ assertTrue("first is expanded", fTreeViewer.getExpandedState(first)); // bug 54116
+ assertTrue("first2 is expanded", fTreeViewer.getExpandedState(first2));
+ assertNotNull("first3 is visible", fViewer.testFindItem(first3));
+ }
+
public void testExpandToLevel() {
TestElement first = fRootElement.getFirstChild();
TestElement first2 = first.getFirstChild();

Back to the top