Merge "Skip shortcut targets if any. (A1)"
diff --git a/java/res/values-da/donottranslate-more-keys.xml b/java/res/values-da/donottranslate-more-keys.xml
index 12c1ebf..bed034d 100644
--- a/java/res/values-da/donottranslate-more-keys.xml
+++ b/java/res/values-da/donottranslate-more-keys.xml
@@ -28,6 +28,7 @@
     <string name="more_keys_for_y">6,ý,ÿ</string>
     <string name="more_keys_for_d">ð</string>
     <string name="more_keys_for_l">ł</string>
+    <string name="keylabel_for_scandinavia_row1_11">å</string>
     <string name="keylabel_for_scandinavia_row2_10">æ</string>
     <string name="keylabel_for_scandinavia_row2_11">ø</string>
     <string name="more_keys_for_scandinavia_row2_10">ä</string>
diff --git a/java/res/values-et/donottranslate-more-keys.xml b/java/res/values-et/donottranslate-more-keys.xml
index d6b3099..1011347 100644
--- a/java/res/values-et/donottranslate-more-keys.xml
+++ b/java/res/values-et/donottranslate-more-keys.xml
@@ -34,4 +34,9 @@
     <string name="more_keys_for_k">ķ</string>
     <string name="more_keys_for_l">ļ,ł,ĺ,ľ</string>
     <string name="more_keys_for_g">ģ,ğ</string>
+    <string name="keylabel_for_scandinavia_row1_11">ü</string>
+    <string name="keylabel_for_scandinavia_row2_10">ö</string>
+    <string name="keylabel_for_scandinavia_row2_11">ä</string>
+    <string name="more_keys_for_scandinavia_row2_10">õ</string>
+    <string name="more_keys_for_scandinavia_row2_11"></string>
 </resources>
diff --git a/java/res/values-fi/donottranslate-more-keys.xml b/java/res/values-fi/donottranslate-more-keys.xml
index df67c69..e1dfa2b 100644
--- a/java/res/values-fi/donottranslate-more-keys.xml
+++ b/java/res/values-fi/donottranslate-more-keys.xml
@@ -23,6 +23,7 @@
     <string name="more_keys_for_u">7,ü</string>
     <string name="more_keys_for_s">š,ß,ś</string>
     <string name="more_keys_for_z">ž,ź,ż</string>
+    <string name="keylabel_for_scandinavia_row1_11">å</string>
     <string name="keylabel_for_scandinavia_row2_10">ö</string>
     <string name="keylabel_for_scandinavia_row2_11">ä</string>
     <string name="more_keys_for_scandinavia_row2_10">ø</string>
diff --git a/java/res/values-nb/donottranslate-more-keys.xml b/java/res/values-nb/donottranslate-more-keys.xml
index b98341c..e83d6b7 100644
--- a/java/res/values-nb/donottranslate-more-keys.xml
+++ b/java/res/values-nb/donottranslate-more-keys.xml
@@ -22,6 +22,7 @@
     <string name="more_keys_for_e">3,é,è,ê,ë,ę,ė,ē</string>
     <string name="more_keys_for_o">9,ô,ò,ó,ö,õ,œ,ō</string>
     <string name="more_keys_for_u">7,ü,û,ù,ú,ū</string>
+    <string name="keylabel_for_scandinavia_row1_11">å</string>
     <string name="keylabel_for_scandinavia_row2_10">ø</string>
     <string name="keylabel_for_scandinavia_row2_11">æ</string>
     <string name="more_keys_for_scandinavia_row2_10">ö</string>
diff --git a/java/res/values-sv/donottranslate-more-keys.xml b/java/res/values-sv/donottranslate-more-keys.xml
index 1fa29a8..d391be5 100644
--- a/java/res/values-sv/donottranslate-more-keys.xml
+++ b/java/res/values-sv/donottranslate-more-keys.xml
@@ -22,6 +22,7 @@
     <string name="more_keys_for_o">9,œ,ô,ò,ó,õ,ō</string>
     <string name="more_keys_for_u">7,ü,û,ù,ú,ū</string>
     <string name="more_keys_for_s">ß,ś,š</string>
+    <string name="keylabel_for_scandinavia_row1_11">å</string>
     <string name="keylabel_for_scandinavia_row2_10">ö</string>
     <string name="keylabel_for_scandinavia_row2_11">ä</string>
     <string name="more_keys_for_scandinavia_row2_10">ø</string>
diff --git a/java/res/values/donottranslate-more-keys.xml b/java/res/values/donottranslate-more-keys.xml
index ac175df..3a3ea1e 100644
--- a/java/res/values/donottranslate-more-keys.xml
+++ b/java/res/values/donottranslate-more-keys.xml
@@ -38,6 +38,7 @@
     <string name="more_keys_for_g"></string>
     <string name="more_keys_for_p">0</string>
     <string name="more_keys_for_v"></string>
+    <string name="keylabel_for_scandinavia_row1_11"></string>
     <string name="keylabel_for_scandinavia_row2_10"></string>
     <string name="keylabel_for_scandinavia_row2_11"></string>
     <string name="more_keys_for_scandinavia_row2_10"></string>
diff --git a/java/res/xml-et/keyboard_set.xml b/java/res/xml-et/keyboard_set.xml
new file mode 100644
index 0000000..304328a
--- /dev/null
+++ b/java/res/xml-et/keyboard_set.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:keyboardLocale="et">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_scandinavian" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShift"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneShift"
+        latin:elementKeyboard="@xml/kbd_phone_shift" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardSet>
diff --git a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
index 19fb521..6d14d89 100644
--- a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
@@ -57,7 +57,7 @@
             latin:keyLabel="p"
             latin:moreKeys="@string/more_keys_for_p" />
         <Key
-            latin:keyLabel="å" />
+            latin:keyLabel="@string/keylabel_for_scandinavia_row1_11" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
diff --git a/java/res/xml-sw768dp/kbd_rows_scandinavian.xml b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
index c2dead2..334b76d 100644
--- a/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
@@ -61,7 +61,7 @@
             latin:keyLabel="p"
             latin:moreKeys="@string/more_keys_for_p" />
         <Key
-            latin:keyLabel="å" />
+            latin:keyLabel="@string/keylabel_for_scandinavia_row1_11" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-11.500%p"
diff --git a/java/res/xml/kbd_rows_scandinavian.xml b/java/res/xml/kbd_rows_scandinavian.xml
index 4f138c5..eb32c00 100644
--- a/java/res/xml/kbd_rows_scandinavian.xml
+++ b/java/res/xml/kbd_rows_scandinavian.xml
@@ -67,7 +67,7 @@
             latin:keyHintLabel="0"
             latin:moreKeys="@string/more_keys_for_p" />
         <Key
-            latin:keyLabel="å"
+            latin:keyLabel="@string/keylabel_for_scandinavia_row1_11"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
@@ -75,8 +75,7 @@
     >
         <Key
             latin:keyLabel="a"
-            latin:moreKeys="@string/more_keys_for_a"
-            latin:keyWidth="8.75%p" />
+            latin:moreKeys="@string/more_keys_for_a" />
         <Key
             latin:keyLabel="s"
             latin:moreKeys="@string/more_keys_for_s" />
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index d9d28f1..3540577 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -205,16 +205,21 @@
         return mShiftState.isShiftLocked();
     }
 
+    private void setShiftKeyGraphics(boolean newShiftState) {
+        if (mShiftState.isShiftLocked()) {
+            return;
+        }
+        for (final Key key : mShiftKeys) {
+            final int attrId = newShiftState
+                    ? R.styleable.Keyboard_iconShiftKeyShifted
+                    : R.styleable.Keyboard_iconShiftKey;
+            key.setIcon(mIconsSet.getIconByAttrId(attrId));
+        }
+    }
+
     // TODO: Remove this method.
     void setShifted(boolean newShiftState) {
-        if (!mShiftState.isShiftLocked()) {
-            for (final Key key : mShiftKeys) {
-                final int attrId = newShiftState
-                        ? R.styleable.Keyboard_iconShiftKeyShifted
-                        : R.styleable.Keyboard_iconShiftKey;
-                key.setIcon(mIconsSet.getIconByAttrId(attrId));
-            }
-        }
+        setShiftKeyGraphics(newShiftState);
         mShiftState.setShifted(newShiftState);
     }
 
@@ -225,6 +230,7 @@
 
     // TODO: Remove this method
     void setAutomaticTemporaryUpperCase() {
+        setShiftKeyGraphics(true);
         mShiftState.setAutomaticTemporaryUpperCase();
     }
 
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index e839fe7..fa073b6 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -134,6 +134,7 @@
         if (mainKeyboardId.isPhoneKeyboard()) {
             mState.onToggleAlphabetAndSymbols();
         }
+        updateShiftState();
     }
 
     public void saveKeyboardState() {
@@ -164,7 +165,6 @@
         mKeyboardView.updateSpacebar(0.0f,
                 mSubtypeSwitcher.needsToDisplayLanguage(keyboard.mId.mLocale));
         mKeyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady());
-        updateShiftState();
         final boolean localeChanged = (oldKeyboard == null)
                 || !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale);
         mInputMethodService.mHandler.startDisplayLanguageOnSpacebar(localeChanged);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index a174fd9..abc220e 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -944,6 +944,7 @@
     public void invalidateAllKeys() {
         mDirtyRect.union(0, 0, getWidth(), getHeight());
         mBufferNeedsUpdate = true;
+        mInvalidatedKey = null;
         invalidate();
     }