aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java40
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java7
2 files changed, 25 insertions, 22 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index f1f942ccb..9c6543b61 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -106,7 +106,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
protected final KeyPreviewDrawParams mKeyPreviewDrawParams;
private boolean mShowKeyPreviewPopup = true;
private int mDelayAfterPreview;
- private PreviewPlacerView mPreviewPlacer;
+ private final PreviewPlacerView mPreviewPlacerView;
/** True if {@link KeyboardView} should handle gesture events. */
protected boolean mShouldHandleGesture;
@@ -376,6 +376,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
mDelayAfterPreview = mKeyPreviewDrawParams.mLingerTimeout;
mPaint.setAntiAlias(true);
+
+ mPreviewPlacerView = new PreviewPlacerView(context);
}
// Read fraction value in TypedArray as float.
@@ -876,39 +878,35 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
private void addKeyPreview(TextView keyPreview) {
- if (mPreviewPlacer == null) {
- createPreviewPlacer();
- }
- mPreviewPlacer.addView(
- keyPreview, ViewLayoutUtils.newLayoutParam(mPreviewPlacer, 0, 0));
+ locatePreviewPlacerView();
+ mPreviewPlacerView.addView(
+ keyPreview, ViewLayoutUtils.newLayoutParam(mPreviewPlacerView, 0, 0));
}
- private void createPreviewPlacer() {
- mPreviewPlacer = new PreviewPlacerView(getContext());
+ private void locatePreviewPlacerView() {
+ if (mPreviewPlacerView.getParent() != null) {
+ return;
+ }
final int[] viewOrigin = new int[2];
getLocationInWindow(viewOrigin);
- mPreviewPlacer.setOrigin(viewOrigin[0], viewOrigin[1]);
+ mPreviewPlacerView.setOrigin(viewOrigin[0], viewOrigin[1]);
final ViewGroup windowContentView =
(ViewGroup)getRootView().findViewById(android.R.id.content);
- windowContentView.addView(mPreviewPlacer);
+ windowContentView.addView(mPreviewPlacerView);
}
public void showGesturePreviewText(String gesturePreviewText) {
// TDOD: Add user settings option to control drawing gesture trail.
- if (mPreviewPlacer == null) {
- createPreviewPlacer();
- }
- mPreviewPlacer.setGesturePreviewText(gesturePreviewText);
- mPreviewPlacer.invalidate();
+ locatePreviewPlacerView();
+ mPreviewPlacerView.setGesturePreviewText(gesturePreviewText);
+ mPreviewPlacerView.invalidate();
}
@Override
public void showGestureTrail(PointerTracker tracker) {
// TDOD: Add user settings option to control drawing gesture trail.
- if (mPreviewPlacer == null) {
- createPreviewPlacer();
- }
- mPreviewPlacer.invalidatePointer(tracker);
+ locatePreviewPlacerView();
+ mPreviewPlacerView.invalidatePointer(tracker);
}
@SuppressWarnings("deprecation") // setBackgroundDrawable is replaced by setBackground in API16
@@ -1051,9 +1049,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
closing();
- if (mPreviewPlacer != null) {
- mPreviewPlacer.removeAllViews();
- }
+ mPreviewPlacerView.removeAllViews();
if (mBuffer != null) {
mBuffer.recycle();
mBuffer = null;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 6b5de486c..1aac734ba 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -701,6 +701,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mLastSelectionStart = editorInfo.initialSelStart;
mLastSelectionEnd = editorInfo.initialSelEnd;
+ // If we come here something in the text state is very likely to have changed.
+ // We should update the shift state regardless of whether we are restarting or not, because
+ // this is not perceived as a layout change that may be disruptive like we may have with
+ // switcher.loadKeyboard; in apps like Talk, we come here when the text is sent and the
+ // field gets emptied and we need to re-evaluate the shift state, but not the whole layout
+ // which would be disruptive.
+ mKeyboardSwitcher.updateShiftState();
mHandler.cancelUpdateSuggestionStrip();
mHandler.cancelDoubleSpacesTimer();