diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java')
-rw-r--r-- | platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java index c769f92fff78..e2693b2c835f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java @@ -1156,7 +1156,13 @@ public class CaretImpl extends UserDataHolderBase implements Caret { @Override public void setSelection(int startOffset, int endOffset) { - doSetSelection(myEditor.offsetToVisualPosition(startOffset), startOffset, myEditor.offsetToVisualPosition(endOffset), endOffset, false); + setSelection(startOffset, endOffset, true); + } + + @Override + public void setSelection(int startOffset, int endOffset, boolean updateSystemSelection) { + doSetSelection(myEditor.offsetToVisualPosition(startOffset), startOffset, myEditor.offsetToVisualPosition(endOffset), endOffset, false, + updateSystemSelection); } @Override @@ -1173,16 +1179,22 @@ public class CaretImpl extends UserDataHolderBase implements Caret { @Override public void setSelection(@Nullable VisualPosition startPosition, int startOffset, @Nullable VisualPosition endPosition, int endOffset) { + setSelection(startPosition, startOffset, endPosition, endOffset, true); + } + + @Override + public void setSelection(@Nullable VisualPosition startPosition, int startOffset, @Nullable VisualPosition endPosition, int endOffset, boolean updateSystemSelection) { VisualPosition startPositionToUse = startPosition == null ? myEditor.offsetToVisualPosition(startOffset) : startPosition; VisualPosition endPositionToUse = endPosition == null ? myEditor.offsetToVisualPosition(endOffset) : endPosition; - doSetSelection(startPositionToUse, startOffset, endPositionToUse, endOffset, true); + doSetSelection(startPositionToUse, startOffset, endPositionToUse, endOffset, true, updateSystemSelection); } private void doSetSelection(@NotNull final VisualPosition startPosition, final int _startOffset, @NotNull final VisualPosition endPosition, final int _endOffset, - final boolean visualPositionAware) + final boolean visualPositionAware, + final boolean updateSystemSelection) { myEditor.getCaretModel().doWithCaretMerging(new Runnable() { public void run() { @@ -1278,7 +1290,9 @@ public class CaretImpl extends UserDataHolderBase implements Caret { myEditor.getSelectionModel().fireSelectionChanged(oldSelectionStart, oldSelectionEnd, startOffset, endOffset); - updateSystemSelection(); + if (updateSystemSelection) { + updateSystemSelection(); + } } }); } |