diff --git a/platform/platform-api/src/com/intellij/ide/util/treeView/UpdaterTreeState.java b/platform/platform-api/src/com/intellij/ide/util/treeView/UpdaterTreeState.java index e5aa870fa1f6..eb2faef6e42e 100644 --- a/platform/platform-api/src/com/intellij/ide/util/treeView/UpdaterTreeState.java +++ b/platform/platform-api/src/com/intellij/ide/util/treeView/UpdaterTreeState.java @@ -33,7 +33,7 @@ public class UpdaterTreeState { protected WeakHashMap myAdjustedSelection = new WeakHashMap(); protected WeakHashMap myDisposedElements = new WeakHashMap(); protected WeakHashMap myToExpand = new WeakHashMap(); - private boolean myProcessingNow; + private int myProcessingCount; private boolean myCanRunRestore = true; @@ -101,15 +101,12 @@ public class UpdaterTreeState { } public boolean process(Runnable runnable) { - boolean oldValue = isProcessingNow(); try { setProcessingNow(true); runnable.run(); } finally { - if (!oldValue) { - setProcessingNow(false); - } + setProcessingNow(false); } return isEmpty(); @@ -121,7 +118,7 @@ public class UpdaterTreeState { public boolean isProcessingNow() { - return myProcessingNow; + return myProcessingCount > 0; } public void addAll(final UpdaterTreeState state) { @@ -342,8 +339,12 @@ public class UpdaterTreeState { } public void setProcessingNow(boolean processingNow) { - myProcessingNow = processingNow; - if (!processingNow) { + if (processingNow) { + myProcessingCount++; + } else { + myProcessingCount--; + } + if (!isProcessingNow()) { myUi.maybeReady(); } }