summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java')
-rw-r--r--platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java32
1 files changed, 18 insertions, 14 deletions
diff --git a/platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java b/platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java
index cee529aecccf..33b417de0af7 100644
--- a/platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java
+++ b/platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java
@@ -17,16 +17,18 @@
package com.intellij.injected.editor;
import com.intellij.openapi.editor.*;
+import com.intellij.openapi.editor.event.CaretAdapter;
import com.intellij.openapi.editor.event.CaretEvent;
import com.intellij.openapi.editor.event.CaretListener;
import com.intellij.openapi.editor.ex.EditorEx;
import com.intellij.openapi.editor.markup.TextAttributes;
-import com.intellij.openapi.util.Segment;
-import com.intellij.openapi.util.TextRange;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
/**
* @author Alexey
@@ -102,7 +104,7 @@ public class CaretModelWindow implements CaretModel {
private final ListenerWrapperMap<CaretListener> myCaretListeners = new ListenerWrapperMap<CaretListener>();
@Override
public void addCaretListener(@NotNull final CaretListener listener) {
- CaretListener wrapper = new CaretListener() {
+ CaretListener wrapper = new CaretAdapter() {
@Override
public void caretPositionChanged(CaretEvent e) {
if (!myEditorWindow.getDocument().isValid()) return; // injected document can be destroyed by now
@@ -163,6 +165,11 @@ public class CaretModelWindow implements CaretModel {
return createInjectedCaret(myDelegate.getPrimaryCaret());
}
+ @Override
+ public int getCaretCount() {
+ return myDelegate.getCaretCount();
+ }
+
@NotNull
@Override
public List<Caret> getAllCarets() {
@@ -204,17 +211,14 @@ public class CaretModelWindow implements CaretModel {
}
@Override
- public void setCaretsAndSelections(@NotNull List<LogicalPosition> caretPositions, @NotNull List<? extends Segment> selections) {
- List<LogicalPosition> convertedPositions = new ArrayList<LogicalPosition>(caretPositions);
- for (LogicalPosition position : caretPositions) {
- convertedPositions.add(myEditorWindow.injectedToHost(position));
- }
- List<Segment> convertedSelections = new ArrayList<Segment>(selections.size());
- for (Segment selection : selections) {
- convertedSelections.add(new TextRange(myEditorWindow.getDocument().injectedToHost(selection.getStartOffset()),
- myEditorWindow.getDocument().injectedToHost(selection.getEndOffset())));
+ public void setCaretsAndSelections(@NotNull List<CaretState> caretStates) {
+ List<CaretState> convertedStates = new ArrayList<CaretState>(caretStates.size());
+ for (CaretState state : caretStates) {
+ convertedStates.add(new CaretState(state.getCaretPosition() == null ? null : myEditorWindow.injectedToHost(state.getCaretPosition()),
+ state.getSelectionStart() == null ? null : myEditorWindow.injectedToHost(state.getSelectionStart()),
+ state.getSelectionEnd() == null ? null : myEditorWindow.injectedToHost(state.getSelectionEnd())));
}
- myDelegate.setCaretsAndSelections(convertedPositions, convertedSelections);
+ myDelegate.setCaretsAndSelections(convertedStates);
}
private InjectedCaret createInjectedCaret(Caret caret) {