From a483f04c16e6b56df24527f6a640e79c86928238 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sat, 7 Feb 2026 17:22:01 -0800 Subject: Major feat: vim --- .../ui/widget/EditorHighlightTextAreaBridge.java | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 core/src/main/java/com/kotcrab/vis/ui/widget/EditorHighlightTextAreaBridge.java (limited to 'core/src/main/java/com/kotcrab/vis') diff --git a/core/src/main/java/com/kotcrab/vis/ui/widget/EditorHighlightTextAreaBridge.java b/core/src/main/java/com/kotcrab/vis/ui/widget/EditorHighlightTextAreaBridge.java new file mode 100644 index 0000000..a14c6a7 --- /dev/null +++ b/core/src/main/java/com/kotcrab/vis/ui/widget/EditorHighlightTextAreaBridge.java @@ -0,0 +1,33 @@ +package com.kotcrab.vis.ui.widget; + +public class EditorHighlightTextAreaBridge extends HighlightTextArea { + public EditorHighlightTextAreaBridge(final String text, final VisTextFieldStyle style) { + super(text, style); + } + + public void editorSyncCursorState() { + updateCurrentLine(); + showCursor(); + } + + public void editorSetSelectionEndpoints(final int selectionStart, final int cursorPosition) { + final int clampedSelectionStart = Math.max(0, Math.min(selectionStart, getText().length())); + final int clampedCursorPosition = Math.max(0, Math.min(cursorPosition, getText().length())); + if (clampedSelectionStart == clampedCursorPosition) { + clearSelection(); + cursor = clampedCursorPosition; + editorSyncCursorState(); + return; + } + + hasSelection = true; + this.selectionStart = clampedSelectionStart; + cursor = clampedCursorPosition; + editorSyncCursorState(); + } + + public void editorSetCursorKeepingSelection(final int cursorPosition) { + cursor = Math.max(0, Math.min(cursorPosition, getText().length())); + editorSyncCursorState(); + } +} -- cgit v1.3