From f58be6c4d4dfd1aea0362ccbbbf7b5cd9eb3b2d1 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 17 Jun 2011 13:43:45 +0200 Subject: [PATCH] when a lookup is just shown, scroll it to the selected item regardless whether it's autopopup or not --- .../codeInsight/completion/CompletionProgressIndicator.java | 5 +++++ .../src/com/intellij/codeInsight/lookup/impl/LookupImpl.java | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java index dab20f656490..0a10b0391fa5 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java @@ -335,6 +335,7 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement ApplicationManager.getApplication().assertIsDispatchThread(); if (isOutdated()) return; + boolean justShown = false; if (!myLookup.isShown() && (!isAutopopupCompletion() || !myLookup.isCalculating())) { if (hideAutopopupIfMeaningless()) { return; @@ -348,10 +349,14 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement } myLookup.show(); + justShown = true; } myLookup.refreshUi(); hideAutopopupIfMeaningless(); updateFocus(); + if (justShown) { + myLookup.ensureSelectionVisible(); + } } final boolean isInsideIdentifier() { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java index fcd321037957..081c83094841 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java @@ -347,7 +347,7 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable myStartCompletionWhenNothingMatches = startCompletionWhenNothingMatches; } - private void ensureSelectionVisible() { + public void ensureSelectionVisible() { ListScrollingUtil.ensureIndexIsVisible(myList, myList.getSelectedIndex(), 1); } @@ -493,7 +493,7 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable if (choosePreselectedItem) { myList.setSelectedValue(myPreselectedItem, false); } else { - ListScrollingUtil.selectItem(myList, doSelectMostPreferableItem(getItems(), groups)); + myList.setSelectedIndex(doSelectMostPreferableItem(getItems(), groups)); } if (myPreselectedItem != null && myShown) {