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" />
+
+