From e1822c5ee30b68bbc8c31cde26e068c8ed736b91 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 21 Oct 2013 19:26:23 +0200 Subject: [PATCH] EA-51122 - assert: TextRange. --- .../intellij/refactoring/ui/NameSuggestionsField.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/ui/NameSuggestionsField.java b/platform/lang-impl/src/com/intellij/refactoring/ui/NameSuggestionsField.java index e14c60820524..5c2aeece037f 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/ui/NameSuggestionsField.java +++ b/platform/lang-impl/src/com/intellij/refactoring/ui/NameSuggestionsField.java @@ -86,7 +86,7 @@ public class NameSuggestionsField extends JPanel { this(suggestedNames, project, fileType); if (editor == null) return; // later here because EditorTextField creates Editor during addNotify() - SwingUtilities.invokeLater(new Runnable() { + final Runnable selectionRunnable = new Runnable() { @Override public void run() { final int offset = editor.getCaretModel().getOffset(); @@ -99,9 +99,11 @@ public class NameSuggestionsField extends JPanel { if (!word.equals(getEnteredName())) continue; final SelectionModel selectionModel = editor.getSelectionModel(); myEditor.getSelectionModel().removeSelection(); - int myOffset = offset - wordRange.getStartOffset(); + final int wordRangeStartOffset = wordRange.getStartOffset(); + int myOffset = offset - wordRangeStartOffset; myEditor.getCaretModel().moveToOffset(myOffset); - TextRange selected = new TextRange(selectionModel.getSelectionStart(), selectionModel.getSelectionEnd()).shiftRight(-wordRange.getStartOffset()); + TextRange selected = new TextRange(Math.max(0, selectionModel.getSelectionStart() - wordRangeStartOffset), + selectionModel.getSelectionEnd() - wordRangeStartOffset); selected = selected.intersection(new TextRange(0, myEditor.getDocument().getTextLength())); if (selectionModel.hasSelection() && selected != null && !selected.isEmpty()) { myEditor.getSelectionModel().setSelection(selected.getStartOffset(), selected.getEndOffset()); @@ -112,7 +114,8 @@ public class NameSuggestionsField extends JPanel { break; } } - }); + }; + SwingUtilities.invokeLater(selectionRunnable); } protected boolean shouldSelectAll() {