From 28bd6e2297cad0182e9d7bf5ee155e653b3e589d Mon Sep 17 00:00:00 2001
From: Jean Chalard <jchalard@google.com>
Date: Fri, 13 Dec 2013 19:07:29 +0900
Subject: [PATCH] Only update shift state if left in auto mode.

Bug: 12100417
Change-Id: I7bc2b19332e142a257b0399f2e5d128caf01fc7c
---
 java/src/com/android/inputmethod/latin/LatinIME.java | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 6a10131b07..8a814fe73f 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1799,10 +1799,19 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
         if (Character.isLetterOrDigit(codePointBeforeCursor)
                 || currentSettingsValues.isUsuallyFollowedBySpace(codePointBeforeCursor)) {
+            final boolean autoShiftHasBeenOverriden = mKeyboardSwitcher.getKeyboardShiftMode() !=
+                    getCurrentAutoCapsState();
             mSpaceState = SPACE_STATE_PHANTOM;
+            if (!autoShiftHasBeenOverriden) {
+                // When we change the space state, we need to update the shift state of the
+                // keyboard unless it has been overridden manually. This is happening for example
+                // after typing some letters and a period, then gesturing; the keyboard is not in
+                // caps mode yet, but since a gesture is starting, it should go in caps mode,
+                // unless the user explictly said it should not.
+                mKeyboardSwitcher.updateShiftState();
+            }
         }
         mConnection.endBatchEdit();
-        mKeyboardSwitcher.updateShiftState();
         mWordComposer.setCapitalizedModeAndPreviousWordAtStartComposingTime(getActualCapsMode(),
                 // Prev word is 1st word before cursor
                 getNthPreviousWordForSuggestion(currentSettingsValues, 1 /* nthPreviousWord */));
-- 
GitLab