From aed6391169e9782be32b3f16ea7adf240cb3ca0d Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Thu, 8 Mar 2012 16:23:29 +0100 Subject: [PATCH] EDT assertion fix --- .../intellij/ide/util/FileStructurePopup.java | 67 +++++++++++-------- 1 file changed, 39 insertions(+), 28 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java b/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java index 9b6102f8a2ef..b61df45a94f2 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java +++ b/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java @@ -206,7 +206,8 @@ public class FileStructurePopup implements Disposable { } }; - myAbstractTreeBuilder.getUi().getUpdater().setPassThroughMode(true); + //myAbstractTreeBuilder.getUi().setPassthroughMode(true); + myAbstractTreeBuilder.getUi().getUpdater().setDelay(1); myInitialPsiElement = getCurrentElement(getPsiFile(myProject)); //myAbstractTreeBuilder.setCanYieldUpdate(true); Disposer.register(this, myAbstractTreeBuilder); @@ -269,9 +270,11 @@ public class FileStructurePopup implements Disposable { myPopup.setSize(new Dimension(myPreferredWidth + 10, myPopup.getSize().height)); } + //final long cur = System.currentTimeMillis(); myAbstractTreeBuilder.expandAll(new Runnable() { @Override public void run() { + //System.out.println(System.currentTimeMillis() - cur); IdeFocusManager.getInstance(myProject).requestFocus(myTree, true); myAbstractTreeBuilder.queueUpdate().doWhenDone(new Runnable() { @Override @@ -298,21 +301,25 @@ public class FileStructurePopup implements Disposable { if (!filter.equals(prefix)) { filter = prefix; - final AccessToken token = ApplicationManager.getApplication().acquireReadActionLock(); - try { - myAbstractTreeBuilder.refilter(null, false, false).doWhenProcessed(new Runnable() { - @Override - public void run() { - myTree.repaint(); - //if (mySpeedSearch.isPopupActive()) { - // mySpeedSearch.refreshSelection(); - //} + ApplicationManager.getApplication().invokeLater(new Runnable() { + public void run() { + final AccessToken token = ApplicationManager.getApplication().acquireReadActionLock(); + try { + myAbstractTreeBuilder.refilter(null, false, false).doWhenProcessed(new Runnable() { + @Override + public void run() { + myTree.repaint(); + //if (mySpeedSearch.isPopupActive()) { + // mySpeedSearch.refreshSelection(); + //} + } + }); } - }); - } - finally { - token.finish(); - } + finally { + token.finish(); + } + } + }); } if (!alarm.isDisposed()) { alarm.addRequest(this, 300); @@ -586,20 +593,24 @@ public class FileStructurePopup implements Disposable { myFilteringStructure.rebuild(); final Object sel = selection; - final AccessToken token = ApplicationManager.getApplication().acquireReadActionLock(); - try { - myAbstractTreeBuilder.refilter(sel, true, false).doWhenProcessed(new Runnable() { - @Override - public void run() { - if (mySpeedSearch.isPopupActive()) { - mySpeedSearch.refreshSelection(); - } + ApplicationManager.getApplication().invokeLater(new Runnable() { + public void run() { + final AccessToken token = ApplicationManager.getApplication().acquireReadActionLock(); + try { + myAbstractTreeBuilder.refilter(sel, true, false).doWhenProcessed(new Runnable() { + @Override + public void run() { + if (mySpeedSearch.isPopupActive()) { + mySpeedSearch.refreshSelection(); + } + } + }); } - }); - } - finally { - token.finish(); - } + finally { + token.finish(); + } + } + }); } }); chkFilter.setFocusable(false);