From 5383aeb3e29892fbc4e32b8ca7b6d240cf520d1c Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Mon, 25 Jul 2016 20:05:32 +0300 Subject: [PATCH] IDEA-152049 Project view collapses in unpinned mode after some time and changes in editor restore tree state on activation and save it on deactivation --- .../impl/AbstractProjectViewPSIPane.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPSIPane.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPSIPane.java index e426c5ce9357..f3c44ba401e4 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPSIPane.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPSIPane.java @@ -48,6 +48,8 @@ import com.intellij.util.OpenSourceUtil; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.accessibility.ScreenReader; import com.intellij.util.ui.tree.TreeUtil; +import com.intellij.util.ui.update.Activatable; +import com.intellij.util.ui.update.UiNotifyConnector; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -118,6 +120,25 @@ public abstract class AbstractProjectViewPSIPane extends AbstractProjectViewPane installComparator(); initTree(); + Disposer.register(getTreeBuilder(), new UiNotifyConnector(myTree, new Activatable() { + private boolean showing; + + @Override + public void showNotify() { + if (!showing) { + showing = true; + restoreExpandedPaths(); + } + } + + @Override + public void hideNotify() { + if (showing) { + showing = false; + saveExpandedPaths(); + } + } + })); return myComponent; }