EA-57072 - IOOBE: EditorImpl.offsetToLogicalLine

This commit is contained in:
Egor.Ushakov
2014-05-29 17:31:52 +04:00
parent 580188625e
commit 60c7d6f901
3 changed files with 16 additions and 8 deletions
@@ -33,7 +33,6 @@ import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl;
import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager;
import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
import com.intellij.xdebugger.impl.ui.XDebuggerEditorBase;
import com.intellij.xdebugger.impl.ui.XDebuggerExpressionComboBox;
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree;
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTreePanel;
import com.intellij.xdebugger.impl.ui.tree.nodes.EvaluatingExpressionRootNode;
@@ -193,13 +192,11 @@ public class XDebuggerEvaluationDialog extends DialogWrapper {
private void evaluate() {
final XDebuggerEditorBase inputEditor = myInputComponent.getInputEditor();
int offset = -1;
Editor editor;
//try to save caret position
if (inputEditor instanceof XDebuggerExpressionComboBox) {
editor = ((XDebuggerExpressionComboBox)inputEditor).getEditor();
if (editor != null) {
offset = editor.getCaretModel().getOffset();
}
Editor editor = inputEditor.getEditor();
if (editor != null) {
offset = editor.getCaretModel().getOffset();
}
final XDebuggerTree tree = myTreePanel.getTree();
@@ -213,12 +210,13 @@ public class XDebuggerEvaluationDialog extends DialogWrapper {
myResultPanel.invalidate();
//editor is already changed
editor = inputEditor instanceof XDebuggerExpressionComboBox ? ((XDebuggerExpressionComboBox)inputEditor).getEditor() : null;
editor = inputEditor.getEditor();
//selectAll puts focus back
inputEditor.selectAll();
//try to restore caret position and clear selection
if (offset >= 0 && editor != null) {
offset = Math.min(editor.getDocument().getTextLength(), offset);
editor.getCaretModel().moveToOffset(offset);
editor.getSelectionModel().setSelection(offset, offset);
}
@@ -22,6 +22,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.openapi.project.Project;
@@ -128,6 +129,9 @@ public abstract class XDebuggerEditorBase {
return myMode;
}
@Nullable
public abstract Editor getEditor();
public abstract JComponent getComponent();
protected abstract void doSetText(XExpression text);
@@ -80,6 +80,12 @@ public class XDebuggerMultilineEditor extends XDebuggerEditorBase {
return editor != null ? editor.getContentComponent() : null;
}
@Nullable
@Override
public Editor getEditor() {
return myEditorTextField.getEditor();
}
@Override
public void selectAll() {
myEditorTextField.selectAll();