mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
refactoring: extracted common code for scrolling to caret
This commit is contained in:
@@ -54,9 +54,7 @@ public class EditorModificationUtil {
|
||||
}
|
||||
selectionModel.removeSelection();
|
||||
editor.getDocument().deleteString(selectionStart, selectionEnd);
|
||||
if (editor.getCaretModel().getCurrentCaret() == editor.getCaretModel().getPrimaryCaret()) {
|
||||
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
}
|
||||
scrollToCaret(editor);
|
||||
}
|
||||
|
||||
public static void deleteSelectedTextForAllCarets(@NotNull final Editor editor) {
|
||||
@@ -116,8 +114,8 @@ public class EditorModificationUtil {
|
||||
|
||||
public static int insertStringAtCaret(Editor editor, @NotNull String s, boolean toProcessOverwriteMode, boolean toMoveCaret, int caretShift) {
|
||||
int result = insertStringAtCaretNoScrolling(editor, s, toProcessOverwriteMode, toMoveCaret, caretShift);
|
||||
if (toMoveCaret && editor.getCaretModel().getCurrentCaret() == editor.getCaretModel().getPrimaryCaret()) {
|
||||
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
if (toMoveCaret) {
|
||||
scrollToCaret(editor);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -475,4 +473,15 @@ public class EditorModificationUtil {
|
||||
CaretModel caretModel = editor.getCaretModel();
|
||||
caretModel.moveToOffset(caretModel.getOffset() + caretShift);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is safe to run both in and out of {@link com.intellij.openapi.editor.CaretModel#runForEachCaret(CaretAction)} context.
|
||||
* It scrolls to primary caret in both cases, and, in the former case, avoids performing excessive scrolling in case of large number
|
||||
* of carets.
|
||||
*/
|
||||
public static void scrollToCaret(@NotNull Editor editor) {
|
||||
if (editor.getCaretModel().getCurrentCaret() == editor.getCaretModel().getPrimaryCaret()) {
|
||||
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ public class BackspaceAction extends EditorAction {
|
||||
editor.getCaretModel().moveCaretRelatively(columnShift, 0, false, false, true);
|
||||
}
|
||||
else {
|
||||
scrollToCaret(editor);
|
||||
EditorModificationUtil.scrollToCaret(editor);
|
||||
editor.getSelectionModel().removeSelection();
|
||||
|
||||
FoldRegion region = editor.getFoldingModel().getCollapsedRegionAtOffset(offset - 1);
|
||||
@@ -111,17 +111,11 @@ public class BackspaceAction extends EditorAction {
|
||||
int lineEnd = document.getLineEndOffset(lineNumber - 1) + separatorLength;
|
||||
document.deleteString(lineEnd - separatorLength, lineEnd);
|
||||
editor.getCaretModel().moveToOffset(lineEnd - separatorLength);
|
||||
scrollToCaret(editor);
|
||||
EditorModificationUtil.scrollToCaret(editor);
|
||||
editor.getSelectionModel().removeSelection();
|
||||
// Do not group delete newline and other deletions.
|
||||
CommandProcessor commandProcessor = CommandProcessor.getInstance();
|
||||
commandProcessor.setCurrentCommandGroupId(null);
|
||||
}
|
||||
}
|
||||
|
||||
private static void scrollToCaret(Editor editor) {
|
||||
if (editor.getCaretModel().getCurrentCaret() == editor.getCaretModel().getPrimaryCaret()) {
|
||||
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-7
@@ -122,7 +122,6 @@ public class EditorActionUtil {
|
||||
|
||||
editor.getCaretModel().moveCaretRelatively(columnShift, lineShift, withSelection, false, false);
|
||||
|
||||
//editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
VisualPosition caretPos = editor.getCaretModel().getVisualPosition();
|
||||
Point caretLocation2 = editor.visualPositionToXY(caretPos);
|
||||
final boolean scrollToCaret = !(editor instanceof EditorImpl) || ((EditorImpl)editor).isScrollToCaret();
|
||||
@@ -624,9 +623,7 @@ public class EditorActionUtil {
|
||||
}
|
||||
}
|
||||
caretModel.moveToOffset(newOffset);
|
||||
if (editor.getCaretModel().getCurrentCaret() == editor.getCaretModel().getPrimaryCaret()) {
|
||||
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
}
|
||||
EditorModificationUtil.scrollToCaret(editor);
|
||||
|
||||
setupSelection(editor, isWithSelection, selectionStart, blockSelectionStart);
|
||||
}
|
||||
@@ -698,9 +695,7 @@ public class EditorActionUtil {
|
||||
if (isWordOrLexemeStart(editor, newOffset, camel)) break;
|
||||
}
|
||||
editor.getCaretModel().moveToOffset(newOffset);
|
||||
if (editor.getCaretModel().getCurrentCaret() == editor.getCaretModel().getPrimaryCaret()) {
|
||||
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
}
|
||||
EditorModificationUtil.scrollToCaret(editor);
|
||||
|
||||
setupSelection(editor, isWithSelection, selectionStart, blockSelectionStart);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user