summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/injected/editor
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/injected/editor')
-rw-r--r--platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java13
-rw-r--r--platform/lang-impl/src/com/intellij/injected/editor/InjectedCaret.java12
2 files changed, 24 insertions, 1 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 d0288d71a9a2..da44ae6c123c 100644
--- a/platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java
+++ b/platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java
@@ -212,13 +212,24 @@ public class CaretModelWindow implements CaretModel {
@Override
public void setCaretsAndSelections(@NotNull List<CaretState> caretStates) {
+ List<CaretState> convertedStates = convertCaretStates(caretStates);
+ myDelegate.setCaretsAndSelections(convertedStates);
+ }
+
+ @Override
+ public void setCaretsAndSelections(@NotNull List<CaretState> caretStates, boolean updateSystemSelection) {
+ List<CaretState> convertedStates = convertCaretStates(caretStates);
+ myDelegate.setCaretsAndSelections(convertedStates, updateSystemSelection);
+ }
+
+ private List<CaretState> convertCaretStates(List<CaretState> caretStates) {
List<CaretState> convertedStates = new ArrayList<CaretState>(caretStates.size());
for (CaretState state : caretStates) {
convertedStates.add(new CaretState(injectedToHost(state.getCaretPosition()),
injectedToHost(state.getSelectionStart()),
injectedToHost(state.getSelectionEnd())));
}
- myDelegate.setCaretsAndSelections(convertedStates);
+ return convertedStates;
}
private LogicalPosition injectedToHost(@Nullable LogicalPosition position) {
diff --git a/platform/lang-impl/src/com/intellij/injected/editor/InjectedCaret.java b/platform/lang-impl/src/com/intellij/injected/editor/InjectedCaret.java
index e52fa66ccefc..ec958fdc557a 100644
--- a/platform/lang-impl/src/com/intellij/injected/editor/InjectedCaret.java
+++ b/platform/lang-impl/src/com/intellij/injected/editor/InjectedCaret.java
@@ -165,6 +165,12 @@ public class InjectedCaret implements Caret {
}
@Override
+ public void setSelection(int startOffset, int endOffset, boolean updateSystemSelection) {
+ TextRange hostRange = myEditorWindow.getDocument().injectedToHost(new ProperTextRange(startOffset, endOffset));
+ myDelegate.setSelection(hostRange.getStartOffset(), hostRange.getEndOffset(), updateSystemSelection);
+ }
+
+ @Override
public void setSelection(int startOffset, @Nullable VisualPosition endPosition, int endOffset) {
TextRange hostRange = myEditorWindow.getDocument().injectedToHost(new ProperTextRange(startOffset, endOffset));
myDelegate.setSelection(hostRange.getStartOffset(), endPosition, hostRange.getEndOffset());
@@ -177,6 +183,12 @@ public class InjectedCaret implements Caret {
}
@Override
+ public void setSelection(@Nullable VisualPosition startPosition, int startOffset, @Nullable VisualPosition endPosition, int endOffset, boolean updateSystemSelection) {
+ TextRange hostRange = myEditorWindow.getDocument().injectedToHost(new ProperTextRange(startOffset, endOffset));
+ myDelegate.setSelection(startPosition, hostRange.getStartOffset(), endPosition, hostRange.getEndOffset(), updateSystemSelection);
+ }
+
+ @Override
public void removeSelection() {
myDelegate.removeSelection();
}