Potential fix for extension keyboard not cleaning up bubbles sometimes.

This might also fix the keyboard closing suddenly when using the extension.
Re-enable bubble for landscape extension keyboard, since the framework can
now display it to the side.
diff --git a/java/res/layout/input_trans.xml b/java/res/layout/input_trans.xml
index a988bcc..94806f7 100755
--- a/java/res/layout/input_trans.xml
+++ b/java/res/layout/input_trans.xml
@@ -25,5 +25,6 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="#A0000000"
+        android:verticalCorrection="0dip"
         android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
         />
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 7ce1e4e..d0c6bc6 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -19,11 +19,11 @@
 import java.util.List;
 
 import android.content.Context;
-import android.content.res.Configuration;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.inputmethodservice.Keyboard;
 import android.inputmethodservice.KeyboardView;
+import android.inputmethodservice.KeyboardView.OnKeyboardActionListener;
 import android.inputmethodservice.Keyboard.Key;
 import android.os.Handler;
 import android.os.Message;
@@ -173,19 +173,17 @@
             LayoutInflater li = (LayoutInflater) getContext().getSystemService(
                     Context.LAYOUT_INFLATER_SERVICE);
             mExtension = (LatinKeyboardView) li.inflate(R.layout.input_trans, null);
-            mExtension.setOnKeyboardActionListener((LatinIME) getContext());
+            mExtension.setOnKeyboardActionListener(
+                    new ExtensionKeyboardListener(getOnKeyboardActionListener()));
             mExtension.setPopupParent(this);
             mExtension.setPopupOffset(0, -windowLocation[1]);
             Keyboard keyboard;
             mExtension.setKeyboard(keyboard = new LatinKeyboard(getContext(),
                     ((LatinKeyboard) getKeyboard()).getExtension()));
-            if (getContext().getResources().getConfiguration().orientation
-                    == Configuration.ORIENTATION_LANDSCAPE) {
-                mExtension.setPreviewEnabled(false);
-            }
             mExtensionPopup.setContentView(mExtension);
             mExtensionPopup.setWidth(getWidth());
             mExtensionPopup.setHeight(keyboard.getHeight());
+            mExtensionPopup.setAnimationStyle(-1);
             getLocationInWindow(windowLocation);
             // TODO: Fix the "- 30". 
             mExtension.setPopupOffset(0, -windowLocation[1] - 30);
@@ -206,11 +204,42 @@
     }
 
     private void closeExtension() {
-        mExtension.setVisibility(INVISIBLE);
         mExtension.closing();
+        mExtension.setVisibility(INVISIBLE);
         mExtensionVisible = false;
     }
 
+    private static class ExtensionKeyboardListener implements OnKeyboardActionListener {
+        private OnKeyboardActionListener mTarget;
+        ExtensionKeyboardListener(OnKeyboardActionListener target) {
+            mTarget = target;
+        }
+        public void onKey(int primaryCode, int[] keyCodes) {
+            mTarget.onKey(primaryCode, keyCodes);
+        }
+        public void onPress(int primaryCode) {
+            mTarget.onPress(primaryCode);
+        }
+        public void onRelease(int primaryCode) {
+            mTarget.onRelease(primaryCode);
+        }
+        public void onText(CharSequence text) {
+            mTarget.onText(text);
+        }
+        public void swipeDown() {
+            // Don't pass through
+        }
+        public void swipeLeft() {
+            // Don't pass through
+        }
+        public void swipeRight() {
+            // Don't pass through
+        }
+        public void swipeUp() {
+            // Don't pass through
+        }
+    }
+
     /****************************  INSTRUMENTATION  *******************************/
 
     static final boolean DEBUG_AUTO_PLAY = false;