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

Commit 472d3e48 authored by Matthew Ng's avatar Matthew Ng
Browse files

Allow quickscrub after deadzone consumes touch

Moved deadzone detection to QuickScrubController so that quick scrub can
still occur. If anything is consumed by deadzone, no other touches will
occur however quickscrub can be detected and function with launcher. No
other events except for touch down will be sent to launcher.

Test: scrub right above the home button
Change-Id: I4b4e7a8eacf8fe38d8644116a526c175adaba790
Fixes: 80536498
parent a063da83
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ public class NavigationBarCompat {
    public static final int HIT_TARGET_HOME = 2;
    public static final int HIT_TARGET_OVERVIEW = 3;
    public static final int HIT_TARGET_ROTATION = 4;
    public static final int HIT_TARGET_DEAD_ZONE = 5;

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({FLAG_DISABLE_SWIPE_UP,
+7 −8
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone;

import static android.view.MotionEvent.ACTION_DOWN;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_BACK;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_DEAD_ZONE;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_HOME;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_NONE;

@@ -328,15 +329,15 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        if (shouldDeadZoneConsumeTouchEvents(event)) {
            return true;
        }
        final boolean deadZoneConsumed = shouldDeadZoneConsumeTouchEvents(event);
        switch (event.getActionMasked()) {
            case ACTION_DOWN:
                int x = (int) event.getX();
                int y = (int) event.getY();
                mDownHitTarget = HIT_TARGET_NONE;
                if (getBackButton().isVisible() && mBackButtonBounds.contains(x, y)) {
                if (deadZoneConsumed) {
                    mDownHitTarget = HIT_TARGET_DEAD_ZONE;
                } else if (getBackButton().isVisible() && mBackButtonBounds.contains(x, y)) {
                    mDownHitTarget = HIT_TARGET_BACK;
                } else if (getHomeButton().isVisible() && mHomeButtonBounds.contains(x, y)) {
                    mDownHitTarget = HIT_TARGET_HOME;
@@ -353,9 +354,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (shouldDeadZoneConsumeTouchEvents(event)) {
            return true;
        }
        shouldDeadZoneConsumeTouchEvents(event);
        if (mGestureHelper.onTouchEvent(event)) {
            return true;
        }
@@ -764,7 +763,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
                showSwipeUpUI ? mQuickStepAccessibilityDelegate : null);
    }

    private void updateSlippery() {
    public void updateSlippery() {
        setSlippery(!isQuickStepSwipeUpEnabled() || mPanelView.isFullyExpanded());
    }

+7 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static com.android.systemui.Interpolators.ALPHA_IN;
import static com.android.systemui.Interpolators.ALPHA_OUT;
import static com.android.systemui.OverviewProxyService.DEBUG_OVERVIEW_PROXY;
import static com.android.systemui.OverviewProxyService.TAG_OPS;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_DEAD_ZONE;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -184,6 +185,8 @@ public class QuickStepController implements GestureHelper {
    }

    private boolean handleTouchEvent(MotionEvent event) {
        final boolean deadZoneConsumed =
                mNavigationBarView.getDownHitTarget() == HIT_TARGET_DEAD_ZONE;
        if (mOverviewEventSender.getProxy() == null || (!mNavigationBarView.isQuickScrubEnabled()
                && !mNavigationBarView.isQuickStepSwipeUpEnabled())) {
            return false;
@@ -302,7 +305,7 @@ public class QuickStepController implements GestureHelper {
                || action == MotionEvent.ACTION_UP)) {
            proxyMotionEvents(event);
        }
        return mQuickScrubActive || mQuickStepStarted;
        return mQuickScrubActive || mQuickStepStarted || deadZoneConsumed;
    }

    @Override
@@ -424,6 +427,9 @@ public class QuickStepController implements GestureHelper {
            mTrackAnimator.playTogether(trackAnimator, navBarAnimator);
            mTrackAnimator.start();

            // Disable slippery for quick scrub to not cancel outside the nav bar
            mNavigationBarView.updateSlippery();

            try {
                mOverviewEventSender.getProxy().onQuickScrubStart();
                if (DEBUG_OVERVIEW_PROXY) {