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

Commit 0b0452ed authored by Johannes Gallmann's avatar Johannes Gallmann Committed by Android (Google) Code Review
Browse files

Merge "Cancel predictive back when sliding off back button" into main

parents 4af733d6 b28ff341
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.graphics.Region.Op;
import android.graphics.drawable.Drawable;
@@ -75,6 +76,7 @@ import android.inputmethodservice.InputMethodService;
import android.os.Handler;
import android.util.Property;
import android.view.Gravity;
import android.view.HapticFeedbackConstants;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
@@ -862,15 +864,21 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT

    private void setBackButtonTouchListener(View buttonView,
            TaskbarNavButtonController navButtonController) {
        final RectF rect = new RectF();
        buttonView.setOnTouchListener((v, event) -> {
            if (event.getAction() == MotionEvent.ACTION_MOVE) return false;
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                rect.set(0, 0, v.getWidth(), v.getHeight());
            }
            boolean isCancelled = event.getAction() == MotionEvent.ACTION_CANCEL
                    || !rect.contains(event.getX(), event.getY());
            if (event.getAction() == MotionEvent.ACTION_MOVE && !isCancelled) return false;
            int motionEventAction = event.getAction();
            int keyEventAction = motionEventAction == MotionEvent.ACTION_DOWN
                    ? KeyEvent.ACTION_DOWN : ACTION_UP;
            boolean isCancelled = event.getAction() == MotionEvent.ACTION_CANCEL;
            navButtonController.sendBackKeyEvent(keyEventAction, isCancelled);
            if (motionEventAction == MotionEvent.ACTION_UP) {
            if (motionEventAction == MotionEvent.ACTION_UP && !isCancelled) {
                buttonView.performClick();
                buttonView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
            }
            return false;
        });