diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java index 281a7f04f..a58dd4b8e 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java @@ -996,9 +996,15 @@ public final class InputLogic { // between swappers and strippers), so we should not stay in phantom space state if // the separator is a stripper. Hence the additional test above. mSpaceState = SpaceState.PHANTOM; - } - - if (mSpaceState == SpaceState.NONE && wasComposingWord && settingsValues.isUsuallyFollowedBySpace(codePoint)) { + } else + // mSpaceState is still SpaceState.NONE, but some characters should typically + // be followed by space. Set phantom space state for such characters if the user + // enabled the setting and was not composing a word. The latter avoids setting + // phantom space state when typing decimal numbers, with the drawback of not + // setting phantom space state after ending a sentence with a non-word. + if (wasComposingWord + && settingsValues.mInsertMoreSpacesEnabled + && settingsValues.isUsuallyFollowedBySpace(codePoint)) { mSpaceState = SpaceState.PHANTOM; } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java index 24990a334..01682d497 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java @@ -94,6 +94,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_KEYBOARD_HEIGHT_SCALE = "pref_keyboard_height_scale"; public static final String PREF_SPACE_TRACKPAD = "pref_space_trackpad"; public static final String PREF_DELETE_SWIPE = "pref_delete_swipe"; + public static final String PREF_INSERT_MORE_SPACES = "pref_insert_more_spaces"; public static final String PREF_ALWAYS_INCOGNITO_MODE = "pref_always_incognito_mode"; public static final String PREF_BIGRAM_PREDICTIONS = "next_word_prediction"; @@ -392,6 +393,10 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang return prefs.getBoolean(PREF_DELETE_SWIPE, true); } + public static boolean readInsertMoreSpacesEnabled(final SharedPreferences prefs) { + return prefs.getBoolean(PREF_INSERT_MORE_SPACES, false); + } + public static boolean readUseFullscreenMode(final Resources res) { return res.getBoolean(R.bool.config_use_fullscreen_mode); } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java index 009018892..4e160ce1b 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java @@ -80,6 +80,7 @@ public class SettingsValues { public final boolean mBlockPotentiallyOffensive; public final boolean mSpaceTrackpadEnabled; public final boolean mDeleteSwipeEnabled; + public final boolean mInsertMoreSpacesEnabled; public final boolean mClipboardHistoryEnabled; public final long mClipboardHistoryRetentionTime; public final boolean mOneHandedModeEnabled; @@ -237,6 +238,7 @@ public class SettingsValues { } mSpaceTrackpadEnabled = Settings.readSpaceTrackpadEnabled(prefs); mDeleteSwipeEnabled = Settings.readDeleteSwipeEnabled(prefs); + mInsertMoreSpacesEnabled = Settings.readInsertMoreSpacesEnabled(prefs); mClipboardHistoryEnabled = Settings.readClipboardHistoryEnabled(prefs); mClipboardHistoryRetentionTime = Settings.readClipboardHistoryRetentionTime(prefs, res); mOneHandedModeEnabled = Settings.readOneHandedModeEnabled(prefs); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2e0ccc187..06aa5fc17 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -186,6 +186,10 @@ Space bar trackpad Swipe on the spacebar to move the cursor + + Insert spaces after punctuation + + Automatically insert space after punctuation, even if the previous word was not a suggestion Force incognito mode diff --git a/app/src/main/res/xml/prefs_screen_advanced.xml b/app/src/main/res/xml/prefs_screen_advanced.xml index 778671bc6..ad3a4c02e 100644 --- a/app/src/main/res/xml/prefs_screen_advanced.xml +++ b/app/src/main/res/xml/prefs_screen_advanced.xml @@ -76,6 +76,12 @@ android:summary="@string/delete_swipe_summary" android:defaultValue="true" /> + +