diff options
author | Tor Norbye <tnorbye@google.com> | 2014-08-19 22:27:03 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-08-19 21:25:05 +0000 |
commit | 4ca751c002784c4bfd349cc5240b045b62277c80 (patch) | |
tree | dfc17b31990e2429535609b85f6d080c4fa0d9fe /platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java | |
parent | 890d9a2952301682ffecaed4495f5f65c84c3642 (diff) | |
parent | 060e58b3afea3ea39f5ba1cb5a443ca3ebda28c8 (diff) | |
download | idea-4ca751c002784c4bfd349cc5240b045b62277c80.tar.gz |
Merge "Merge remote-tracking branch 'aosp/upstream-master' into merge"
Diffstat (limited to 'platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java | 45 |
1 files changed, 24 insertions, 21 deletions
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 3a1f04b80414..9a71909fcca8 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 @@ -372,31 +372,34 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable, checkValid(); CollectionListModel<LookupElement> listModel = getListModel(); - synchronized (myList) { - Pair<List<LookupElement>, Integer> pair = myPresentableArranger.arrangeItems(this, onExplicitAction || reused); - List<LookupElement> items = pair.first; - Integer toSelect = pair.second; - if (toSelect == null || toSelect < 0 || items.size() > 0 && toSelect >= items.size()) { - LOG.error("Arranger " + myPresentableArranger + " returned invalid selection index=" + toSelect + "; items=" + items); - } - - myOffsets.checkMinPrefixLengthChanges(items, this); - List<LookupElement> oldModel = listModel.toList(); - listModel.removeAll(); - if (!items.isEmpty()) { - listModel.add(items); - } - else { - addEmptyItem(listModel); - } + Pair<List<LookupElement>, Integer> pair; + synchronized (myList) { + pair = myPresentableArranger.arrangeItems(this, onExplicitAction || reused); + } + + List<LookupElement> items = pair.first; + Integer toSelect = pair.second; + if (toSelect == null || toSelect < 0 || items.size() > 0 && toSelect >= items.size()) { + LOG.error("Arranger " + myPresentableArranger + " returned invalid selection index=" + toSelect + "; items=" + items); + toSelect = 0; + } - updateListHeight(listModel); + myOffsets.checkMinPrefixLengthChanges(items, this); + List<LookupElement> oldModel = listModel.toList(); - myList.setSelectedIndex(toSelect); - return !ContainerUtil.equalsIdentity(oldModel, items); + listModel.removeAll(); + if (!items.isEmpty()) { + listModel.add(items); } + else { + addEmptyItem(listModel); + } + + updateListHeight(listModel); + myList.setSelectedIndex(toSelect); + return !ContainerUtil.equalsIdentity(oldModel, items); } private boolean isSelectionVisible() { @@ -566,7 +569,7 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable, public void perform(Caret caret) { EditorModificationUtil.deleteSelectedText(hostEditor); final int caretOffset = hostEditor.getCaretModel().getOffset(); - int lookupStart = caretOffset - prefix; + int lookupStart = Math.max(caretOffset - prefix, 0); int len = hostEditor.getDocument().getTextLength(); LOG.assertTrue(lookupStart >= 0 && lookupStart <= len, |