diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/injected/editor')
-rw-r--r-- | platform/lang-impl/src/com/intellij/injected/editor/CaretModelWindow.java | 13 | ||||
-rw-r--r-- | platform/lang-impl/src/com/intellij/injected/editor/InjectedCaret.java | 12 |
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(); } |