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

Commit 4a9be115 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Cancel more suggestions when its outside is touched

Bug: 5241105
Change-Id: Ic28afaf998dabd3c5529286a3e60400d733d3d82
parent a08a7e99
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -142,6 +142,13 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
        // Nothing to do with.
    }

    private final View.OnTouchListener mMotionEventDelegate = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent me) {
            return MoreSuggestionsView.this.dispatchTouchEvent(me);
        }
    };

    @Override
    public void showMoreKeysPanel(View parentView, Controller controller, int pointX, int pointY,
            PopupWindow window, KeyboardActionListener listener) {
@@ -160,6 +167,10 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
                - (container.getMeasuredHeight() - container.getPaddingBottom())
                + parentView.getPaddingTop() + mCoordinates[1];

        container.setOnTouchListener(mMotionEventDelegate);
        window.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
        window.setFocusable(true);
        window.setOutsideTouchable(true);
        window.setContentView(container);
        window.setWidth(container.getMeasuredWidth());
        window.setHeight(container.getMeasuredHeight());
@@ -214,6 +225,19 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
        }
    };

    @Override
    public boolean dispatchTouchEvent(MotionEvent me) {
        final int x = (int)me.getX();
        final int y = (int)me.getY();
        final boolean inside = (x >= 0 && x < getWidth() && y >= 0 && y < getHeight());
        if (inside) {
            return super.dispatchTouchEvent(me);
        } else {
            dismissMoreKeysPanel();
            return true;
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent me) {
        final int action = me.getAction();