diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java index 77038f4df88e..407505ba8714 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java @@ -180,6 +180,10 @@ public class ScopeTreeViewPanel extends JPanel implements Disposable { myUpdateQueue.queue(new Update("Select") { public void run() { if (myProject.isDisposed()) return; + if (myUpdateQueue.isSuspended()) { + myUpdateQueue.queue(this); + return; + } PackageDependenciesNode node = myBuilder.findNode(file, element); if (node != null && node.getPsiElement() != element) { final TreePath path = new TreePath(node.getPath()); @@ -271,11 +275,15 @@ public class ScopeTreeViewPanel extends JPanel implements Disposable { myTree.setPaintBusy(true); myBuilder.setTree(myTree); myTree.getEmptyText().setText("Loading..."); + if (!ApplicationManager.getApplication().isUnitTestMode()) { + myUpdateQueue.suspend(); + } myTree.setModel(myBuilder.build(myProject, showProgress, new Runnable(){ @Override public void run() { myTree.setPaintBusy(false); myTree.getEmptyText().setText(UIBundle.message("message.nothingToShow")); + myUpdateQueue.resume(); } })); ((PackageDependenciesNode)myTree.getModel().getRoot()).sortChildren(); diff --git a/platform/platform-api/src/com/intellij/util/ui/update/MergingUpdateQueue.java b/platform/platform-api/src/com/intellij/util/ui/update/MergingUpdateQueue.java index c6fec60254d8..7ba4db72b033 100644 --- a/platform/platform-api/src/com/intellij/util/ui/update/MergingUpdateQueue.java +++ b/platform/platform-api/src/com/intellij/util/ui/update/MergingUpdateQueue.java @@ -257,6 +257,10 @@ public class MergingUpdateQueue implements Runnable, Disposable, Activatable { return !current.dominates(modalityState); } + public boolean isSuspended() { + return mySuspended; + } + private static boolean isExpired(Update each) { return each.isDisposed() || each.isExpired(); }