From f4cf5b9952ae331806bf656a6f977a5ece47fe80 Mon Sep 17 00:00:00 2001 From: satok Date: Wed, 2 May 2012 17:25:23 +0900 Subject: [PATCH] Workaround return preserved backing view height when the backing view is not ready Change-Id: If4f24500ead516c46e6a93a95291e0897548c2f0 --- .../android/inputmethod/latin/LatinIME.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index c6381180c..ddb478e12 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -93,6 +93,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private static final int QUICK_PRESS = 200; private static final int PENDING_IMS_CALLBACK_DURATION = 800; + // TODO: remove this + private static final boolean WORKAROUND_USE_LAST_BACKING_HEIGHT_WHEN_NOT_READY = true; + private static int sLastBackingHeight = 0; /** * The name of the scheme used by the Package Manager to warn of a new package installation, @@ -933,8 +936,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // be considered. // See {@link android.inputmethodservice.InputMethodService#onComputeInsets}. final int extractHeight = isFullscreenMode() ? mExtractArea.getHeight() : 0; - final int backingHeight = (mKeyPreviewBackingView.getVisibility() == View.GONE) ? 0 - : mKeyPreviewBackingView.getHeight(); + final boolean backingGone = mKeyPreviewBackingView.getVisibility() == View.GONE; + int backingHeight = backingGone ? 0 : mKeyPreviewBackingView.getHeight(); + if (WORKAROUND_USE_LAST_BACKING_HEIGHT_WHEN_NOT_READY && !backingGone) { + if (backingHeight <= 0) { + backingHeight = sLastBackingHeight; + } else { + sLastBackingHeight = backingHeight; + } + } final int suggestionsHeight = (mSuggestionsContainer.getVisibility() == View.GONE) ? 0 : mSuggestionsContainer.getHeight(); final int extraHeight = extractHeight + backingHeight + suggestionsHeight; @@ -954,6 +964,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } outInsets.contentTopInsets = touchY; outInsets.visibleTopInsets = touchY; + if (WORKAROUND_USE_LAST_BACKING_HEIGHT_WHEN_NOT_REQADY) { + if (LatinImeLogger.sDBG) { + Log.i(TAG, "--- insets: " + touchY + "," + backingHeight + "," + suggestionsHeight); + } + } } @Override