diff options
Diffstat (limited to 'core/src/main/java/com/kotcrab')
| -rw-r--r-- | core/src/main/java/com/kotcrab/vis/ui/widget/EditorHighlightTextAreaBridge.java | 33 |
1 files changed, 33 insertions, 0 deletions
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(); + } +} |
