From 05c0fc6136a27eb12a078514f730c277e9a8739e Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Tue, 21 Jun 2011 10:06:45 +0900
Subject: [PATCH] Fix NPE in LatinKeyboard

Bug: 4727778
Change-Id: I9d5b7185d75408a8af6d302fb348e118c0f9721e
---
 .../inputmethod/keyboard/LatinKeyboard.java    | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index 473006deb9..020fb56ca6 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -136,12 +136,16 @@ public class LatinKeyboard extends Keyboard {
         // The threshold is "key width" x 1.25
         mSpacebarLanguageSwitchThreshold = (getMostCommonKeyWidth() * 5) / 4;
 
-        final int spaceKeyWidth = Math.max(mSpaceKey.mWidth,
-                (int)(getMinWidth() * SPACEBAR_POPUP_MIN_RATIO));
-        final int spaceKeyheight = mSpacePreviewIcon.getIntrinsicHeight();
-        mSlidingLocaleIcon = new SlidingLocaleDrawable(
-                context, mSpacePreviewIcon, spaceKeyWidth, spaceKeyheight);
-        mSlidingLocaleIcon.setBounds(0, 0, spaceKeyWidth, spaceKeyheight);
+        if (mSpaceKey != null) {
+            final int slidingIconWidth = Math.max(mSpaceKey.mWidth,
+                    (int)(getMinWidth() * SPACEBAR_POPUP_MIN_RATIO));
+            final int spaceKeyheight = mSpacePreviewIcon.getIntrinsicHeight();
+            mSlidingLocaleIcon = new SlidingLocaleDrawable(
+                    context, mSpacePreviewIcon, slidingIconWidth, spaceKeyheight);
+            mSlidingLocaleIcon.setBounds(0, 0, slidingIconWidth, spaceKeyheight);
+        } else {
+            mSlidingLocaleIcon = null;
+        }
     }
 
     public void setSpacebarTextFadeFactor(float fadeFactor, LatinKeyboardView view) {
@@ -350,6 +354,8 @@ public class LatinKeyboard extends Keyboard {
         if (mSpacebarSlidingLanguageSwitchDiff == diff)
             return;
         mSpacebarSlidingLanguageSwitchDiff = diff;
+        if (mSlidingLocaleIcon == null)
+            return;
         mSlidingLocaleIcon.setDiff(diff);
         if (Math.abs(diff) == Integer.MAX_VALUE) {
             mSpaceKey.setPreviewIcon(mSpacePreviewIcon);
-- 
GitLab