From 9d322ef4846dc04d28c6965d8c72c58abdefaef3 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Tue, 10 Apr 2018 17:01:01 +0200 Subject: [PATCH] Fix enter and autocomplete bugs --- .../quasseldroid/ui/chat/input/ChatlineFragment.kt | 1 + .../quasseldroid/ui/chat/input/EditorHelper.kt | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt index 4b0b8bdfd..98c1dbe69 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt @@ -155,6 +155,7 @@ class ChatlineFragment : ServiceBoundFragment() { chatline.setText("") } + editorHelper.setOnEnterListener(::send) send.setOnClickListener { send() } tabComplete.visibleIf(autoCompleteSettings.button) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt index a16dd2f1e..2deefe127 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt @@ -48,13 +48,10 @@ class EditorHelper( val previous = autoCompleteHelper.autoCompletionState val next = if (previous != null && s != null) { val suffix = if (previous.range.start == 0) ": " else " " - val end = Math.min( - s.length, previous.range.start + previous.completion.name.length + suffix.length - ) - val sequence = if (end < previous.range.start) "" - else s.substring(previous.range.start, end) + val sequence = if (s.length < previous.range.start) "" + else s.substring(previous.range.start) if (sequence == previous.completion.name + suffix) { - previous.originalWord to (previous.range.start until end) + previous.originalWord to (previous.range.start until s.length) } else { autoCompleteHelper.autoCompletionState = null s.lastWordIndices(editText.selectionStart, onlyBeforeCursor = true)?.let { indices -> @@ -167,6 +164,10 @@ class EditorHelper( }.fold(0, Int::or) } + fun setOnEnterListener(listener: (() -> Unit)?) { + this.enterListener = listener + } + fun setMultiLine(enabled: Boolean) = editText.setMultiLine(enabled) fun replaceText(text: CharSequence?) = editText.replace(text) -- GitLab