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

Commit 2087cf50 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Handle back key and outside touch correctly in more suggestions window"

parents b45e095a bfc1d732
Loading
Loading
Loading
Loading
+0 −18
Original line number Diff line number Diff line
@@ -163,8 +163,6 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
                - (container.getMeasuredHeight() - container.getPaddingBottom())
                + parentView.getPaddingTop() + mCoordinates[1];

        window.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
        window.setOutsideTouchable(true);
        window.setContentView(container);
        window.setWidth(container.getMeasuredWidth());
        window.setHeight(container.getMeasuredHeight());
@@ -220,22 +218,6 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
        }
    };

    @Override
    public boolean dispatchTouchEvent(MotionEvent me) {
        final int index = me.getActionIndex();
        final int id = me.getPointerId(index);
        final PointerTracker tracker = PointerTracker.getPointerTracker(id, this);
        final int x = (int)me.getX(index);
        final int y = (int)me.getY(index);
        final boolean inside = (x >= 0 && x < getWidth() && y >= 0 && y < getHeight());
        if (inside || tracker.isInSlidingKeyInput()) {
            return super.dispatchTouchEvent(me);
        } else {
            dismissMoreKeysPanel();
            return true;
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent me) {
        final int action = me.getAction();
+16 −21
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.graphics.Paint.Align;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Message;
import android.os.SystemClock;
@@ -506,10 +507,22 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
        mMoreSuggestionsView = (MoreSuggestionsView)mMoreSuggestionsContainer
                .findViewById(R.id.more_suggestions_view);
        mMoreSuggestionsBuilder = new MoreSuggestions.Builder(mMoreSuggestionsView);
        mMoreSuggestionsWindow = new PopupWindow(context);
        mMoreSuggestionsWindow.setWindowLayoutMode(

        final PopupWindow moreWindow = new PopupWindow(context);
        moreWindow.setWindowLayoutMode(
                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        mMoreSuggestionsWindow.setBackgroundDrawable(null);
        moreWindow.setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));
        moreWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
        moreWindow.setFocusable(true);
        moreWindow.setOutsideTouchable(true);
        moreWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
            @Override
            public void onDismiss() {
                mKeyboardView.dimEntireKeyboard(false);
            }
        });
        mMoreSuggestionsWindow = moreWindow;

        final Resources res = context.getResources();
        mMoreSuggestionsModalTolerance = res.getDimensionPixelOffset(
                R.dimen.more_suggestions_modal_tolerance);
@@ -517,21 +530,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
                context, mMoreSuggestionsSlidingListener);
    }

    private final View.OnTouchListener mMoreSuggestionsCanceller = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent me) {
            if (!mMoreSuggestionsWindow.isShowing()) return false;

            switch (me.getAction()) {
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_POINTER_UP:
                return mMoreSuggestionsView.dismissMoreKeysPanel();
            default:
                return true;
            }
        }
    };

    /**
     * A connection back to the input method.
     * @param listener
@@ -726,8 +724,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
    private boolean dismissMoreSuggestions() {
        if (mMoreSuggestionsWindow.isShowing()) {
            mMoreSuggestionsWindow.dismiss();
            mKeyboardView.dimEntireKeyboard(false);
            mKeyboardView.setOnTouchListener(null);
            return true;
        }
        return false;
@@ -767,7 +763,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
            mOriginX = mLastX;
            mOriginY = mLastY;
            mKeyboardView.dimEntireKeyboard(true);
            mKeyboardView.setOnTouchListener(mMoreSuggestionsCanceller);
            for (int i = 0; i < params.mSuggestionsCountInStrip; i++) {
                mWords.get(i).setPressed(false);
            }