From 6775f66437473cb4c8b8073a8195b80783cd93ec Mon Sep 17 00:00:00 2001 From: Sunny Chung Date: Thu, 9 Jan 2025 00:01:44 +0800 Subject: [PATCH] fix crash when `BigTextFieldState.replaceTextAtCursor` is called with a selection --- CHANGELOG.md | 12 ++++++++++++ .../multiplatform/bigtext/ux/BigTextFieldState.kt | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ee52af..3ce3a03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +### Fixed +UI +- Crash when `BigTextFieldState.replaceTextAtCursor` is called with a selection. + + +## UI [2.0.0], DS [2.0.0] - 2025-01-05 + +### Breaking Change +UI +- BigTextManipulator and onTextManipulatorReady are removed. Replaced by BigText, BigTextFieldState and BigTextViewState. +- Default cursor color has been changed + ### New Common - Option to turn off soft wrap diff --git a/ui-composable/src/jvmMain/kotlin/com/sunnychung/lib/multiplatform/bigtext/ux/BigTextFieldState.kt b/ui-composable/src/jvmMain/kotlin/com/sunnychung/lib/multiplatform/bigtext/ux/BigTextFieldState.kt index 88437f0..a4c04d9 100644 --- a/ui-composable/src/jvmMain/kotlin/com/sunnychung/lib/multiplatform/bigtext/ux/BigTextFieldState.kt +++ b/ui-composable/src/jvmMain/kotlin/com/sunnychung/lib/multiplatform/bigtext/ux/BigTextFieldState.kt @@ -66,7 +66,10 @@ class BigTextFieldState(val text: BigText, val viewState: BigTextViewState) { fun replaceTextAtCursor(newText: CharSequence, isSaveIntoUndoHistory: Boolean = true) { if (viewState.hasSelection()) { - text.delete(viewState.selection) + val selection = viewState.selection + text.delete(selection) + viewState.setSelection(EMPTY_SELECTION_RANGE) + viewState.setCursorIndex(selection.start) } if (newText.isNotEmpty()) { text.insertAt(viewState.cursorIndex, newText)