diff --git a/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java b/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java index 2040d6bf835e..f9508aa5d53d 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java @@ -179,7 +179,7 @@ public class GotoActionAction extends GotoActionBase implements DumbAware { private static void repaint(@Nullable ChooseByNamePopup popup) { if (popup != null) { - popup.repaintList(); + popup.repaintListImmediate(); } } diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java index dff46257c914..65ae2b3a2d7c 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java @@ -31,6 +31,8 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.statistics.StatisticsInfo; import com.intellij.psi.statistics.StatisticsManager; import com.intellij.ui.ScreenUtil; +import com.intellij.util.ui.update.MergingUpdateQueue; +import com.intellij.util.ui.update.Update; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -54,6 +56,7 @@ public class ChooseByNamePopup extends ChooseByNameBase implements ChooseByNameP private ActionMap myActionMap; private InputMap myInputMap; private String myAdText; + private MergingUpdateQueue myRepaintQueue = new MergingUpdateQueue("ChooseByNamePopup repaint", 50, true, myList); protected ChooseByNamePopup(@Nullable final Project project, @NotNull ChooseByNameModel model, @@ -463,6 +466,30 @@ public class ChooseByNamePopup extends ChooseByNameBase implements ChooseByNameP } public void repaintList() { + myRepaintQueue.cancelAllUpdates(); + myRepaintQueue.queue(new MyUpdate(this)); + } + + private static class MyUpdate extends Update { + private final ChooseByNamePopup myPopup; + + public MyUpdate(ChooseByNamePopup popup) { + super(popup); + myPopup = popup; + } + + @Override + public void run() { + myPopup.repaintListImmediate(); + } + + @Override + public boolean canEat(final Update update) { + return true; + } + } + + public void repaintListImmediate() { myList.repaint(); } }