diff options
| author | Stephan Wahlbrink | 2014-06-23 16:18:33 +0000 |
|---|---|---|
| committer | Mickael Istria | 2019-06-16 19:46:41 +0000 |
| commit | 506a7aeabced4a8b3ba0b11bf17ab8b63e0155c2 (patch) | |
| tree | 386e44a8c9e50a98db1361fabf5f84aa21e94421 | |
| parent | 4cdd39c2e91fa6f31b0e8e992f8cd15b876f81b5 (diff) | |
| download | eclipse.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>
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(); |
