From 22f0f80163a6adc19c2f390b2c54a1170b5b797a Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Thu, 21 Jul 2016 16:20:51 +0300 Subject: [PATCH] IDEA-152049 Project view collapses in unpinned mode after some time and changes in editor --- .../ide/projectView/impl/AbstractProjectViewPane.java | 8 +++----- .../src/com/intellij/ide/util/treeView/TreeState.java | 4 ++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java index 051f42c3ebe9..67fc45cc4613 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java @@ -438,7 +438,7 @@ public abstract class AbstractProjectViewPane implements DataProvider, Disposabl String subId = subPane.getAttributeValue(ATTRIBUTE_SUBID); TreeState treeState = new TreeState(); treeState.readExternal(subPane); - myReadTreeState.put(subId, treeState); + if (!treeState.isEmpty()) myReadTreeState.put(subId, treeState); } } @@ -458,15 +458,13 @@ public abstract class AbstractProjectViewPane implements DataProvider, Disposabl protected void saveExpandedPaths() { if (myTree != null) { TreeState treeState = TreeState.createOn(myTree); - myReadTreeState.put(getSubId(), treeState); + if (!treeState.isEmpty()) myReadTreeState.put(getSubId(), treeState); } } public final void restoreExpandedPaths(){ TreeState treeState = myReadTreeState.get(getSubId()); - if (treeState != null) { - treeState.applyTo(myTree); - } + if (treeState != null && !treeState.isEmpty()) treeState.applyTo(myTree); } public void installComparator() { diff --git a/platform/platform-api/src/com/intellij/ide/util/treeView/TreeState.java b/platform/platform-api/src/com/intellij/ide/util/treeView/TreeState.java index 597f0311144c..538916f6aefd 100644 --- a/platform/platform-api/src/com/intellij/ide/util/treeView/TreeState.java +++ b/platform/platform-api/src/com/intellij/ide/util/treeView/TreeState.java @@ -110,6 +110,10 @@ public class TreeState implements JDOMExternalizable { this(new ArrayList>(), new ArrayList>()); } + public boolean isEmpty() { + return myExpandedPaths.isEmpty() && mySelectedPaths.isEmpty(); + } + @Override public void readExternal(Element element) throws InvalidDataException { readExternal(element, myExpandedPaths, PATH);