From 9975a7d8f61b5d0df60c3249c9168cb07980750f Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sat, 21 Oct 2023 08:29:47 +0200 Subject: [PATCH] fix missing auto-space with url detection caused by bug in nonWordCodePointAndNoSpaceBeforeCursor fixes #229 --- .../inputmethod/latin/common/StringUtils.kt | 4 ++-- .../openboard/inputmethod/latin/InputLogicTest.kt | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/StringUtils.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/StringUtils.kt index ef8e8972b..93b99abee 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/StringUtils.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/StringUtils.kt @@ -34,9 +34,9 @@ fun nonWordCodePointAndNoSpaceBeforeCursor(s: CharSequence, spacingAndPunctuatio space = true if (!nonWordCodePoint && !spacingAndPunctuations.isWordCodePoint(it)) nonWordCodePoint = true - space && nonWordCodePoint + space && nonWordCodePoint // stop if both are found } - return space && nonWordCodePoint + return nonWordCodePoint && !space // return true if an non-word codepoint and no space was found } fun hasLetterBeforeLastSpaceBeforeCursor(s: CharSequence): Boolean { diff --git a/app/src/test/java/org/dslul/openboard/inputmethod/latin/InputLogicTest.kt b/app/src/test/java/org/dslul/openboard/inputmethod/latin/InputLogicTest.kt index 1fcd9b0ef..7d5d197d1 100644 --- a/app/src/test/java/org/dslul/openboard/inputmethod/latin/InputLogicTest.kt +++ b/app/src/test/java/org/dslul/openboard/inputmethod/latin/InputLogicTest.kt @@ -463,6 +463,20 @@ class InputLogicTest { assertEquals("b", composingText) } + @Test fun `autospace works in URL field when input isn't URL, also for multiple suggestions`() { + reset() + DeviceProtectedUtils.getSharedPreferences(latinIME).edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + pickSuggestion("this") + pickSuggestion("is") + assertEquals("this is", text) + pickSuggestion("not") + assertEquals("this is not", text) + input('c') + assertEquals("this is not c", text) + assertEquals("c", composingText) + } + @Test fun `emoji is added to dictionary`() { // check both text and codepoint input reset()