Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37cfacba authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Make showing key preview compatible with pre-Honeycomb

Bug: 4179964
Change-Id: Ide0a9c75983b45f8e829f0d64f41557d42fc11e7
parent 0851abf9
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;

@@ -908,10 +909,18 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
        if (mPreviewText.getParent() == null) {
            final FrameLayout screenContent = (FrameLayout) getRootView()
                    .findViewById(android.R.id.content);
            if (android.os.Build.VERSION.SDK_INT >= /* HONEYCOMB */ 11) {
                screenContent.addView(mPreviewText, new FrameLayout.LayoutParams(0, 0));
            } else {
                // Insert LinearLayout to be able to setMargin because pre-Honeycomb FrameLayout
                // could not handle setMargin properly.
                final LinearLayout placer = new LinearLayout(getContext());
                screenContent.addView(placer);
                placer.addView(mPreviewText, new LinearLayout.LayoutParams(0, 0));
            }
        }

        Key key = tracker.getKey(keyIndex);
        final Key key = tracker.getKey(keyIndex);
        // If keyIndex is invalid or IME is already closed, we must not show key preview.
        // Trying to show preview PopupWindow while root window is closed causes
        // WindowManager.BadTokenException.
@@ -943,10 +952,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
                + mPreviewText.getPaddingLeft() + mPreviewText.getPaddingRight());
        final int popupHeight = mPreviewHeight;
        final ViewGroup.LayoutParams lp = mPreviewText.getLayoutParams();
        if (lp != null) {
        lp.width = popupWidth;
        lp.height = popupHeight;
        }

        int popupPreviewX = keyDrawX - (popupWidth - keyDrawWidth) / 2;
        int popupPreviewY = key.mY - popupHeight + mPreviewOffset;