Skip to content

Commit 50268e3

Browse files
authored
Merge pull request #4 from kaleidot725/bugfix/fix_adding_new_line_bug
Fix new line bug
2 parents e860fe2 + b2b0492 commit 50268e3

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

.idea/kotlinc.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

texteditor/src/main/java/jp/kaleidot725/texteditor/controller/EditorController.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package jp.kaleidot725.texteditor.controller
22

33
import androidx.compose.runtime.Composable
4-
import androidx.compose.runtime.Stable
54
import androidx.compose.runtime.mutableStateOf
65
import androidx.compose.runtime.remember
76
import androidx.compose.ui.text.TextRange
@@ -279,7 +278,19 @@ internal class EditorController(
279278
}
280279

281280
private fun TextFieldValue.splitTextsByNL(): List<TextFieldValue> {
282-
return this.text.split("\n").map { TextFieldValue(it, TextRange.Zero) }
281+
var position = 0
282+
val splitTexts = this.text.split("\n").map {
283+
position += it.count()
284+
it to position
285+
}
286+
287+
return splitTexts.mapIndexed { index, pair ->
288+
if (index == 0) {
289+
TextFieldValue(pair.first, TextRange(pair.second))
290+
} else {
291+
TextFieldValue(pair.first, TextRange.Zero)
292+
}
293+
}
283294
}
284295

285296
private enum class SelectionOption {

texteditor/src/test/java/jp/kaleidot725/texteditor/EditorControllerTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ class EditorControllerTest : StringSpec({
175175
controller.splitNewLine(targetIndex = 0, TextFieldValue(text = "aaa\n"))
176176

177177
controller.fields.count() shouldBe 2
178-
controller.fields[0].value shouldBe TextFieldValue(text = "aaa")
178+
controller.fields[0].value shouldBe TextFieldValue(text = "aaa", selection = TextRange("aaa".count()))
179179
controller.fields[0].isSelected shouldBe false
180180
controller.fields[1].value shouldBe TextFieldValue(text = "")
181181
controller.fields[1].isSelected shouldBe true
@@ -185,7 +185,7 @@ class EditorControllerTest : StringSpec({
185185
controller.splitNewLine(targetIndex = 0, TextFieldValue(text = "aa\naa"))
186186

187187
controller.fields.count() shouldBe 2
188-
controller.fields[0].value shouldBe TextFieldValue(text = "aa")
188+
controller.fields[0].value shouldBe TextFieldValue(text = "aa", selection = TextRange("aa".count()))
189189
controller.fields[0].isSelected shouldBe false
190190
controller.fields[1].value shouldBe TextFieldValue(text = "aa")
191191
controller.fields[1].isSelected shouldBe true
@@ -195,7 +195,7 @@ class EditorControllerTest : StringSpec({
195195
controller.splitNewLine(targetIndex = 0, TextFieldValue(text = "a\nb\nc\nd"))
196196

197197
controller.fields.count() shouldBe 4
198-
controller.fields[0].value shouldBe TextFieldValue(text = "a")
198+
controller.fields[0].value shouldBe TextFieldValue(text = "a", selection = TextRange("a".count()))
199199
controller.fields[0].isSelected shouldBe false
200200
controller.fields[1].value shouldBe TextFieldValue(text = "b")
201201
controller.fields[1].isSelected shouldBe false

0 commit comments

Comments
 (0)