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

Commit bb944199 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix small issues with event flow for quickscrub"

parents 4aa9e590 4faf38a0
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -157,6 +157,20 @@ public class NavigationBarGestureHelper implements TunerService.Tunable, Gesture
        return (mDockWindowEnabled && interceptDockWindowEvent(event));
    }

    public boolean onTouchEvent(MotionEvent event) {
        // The same down event was just sent on intercept and therefore can be ignored here
        boolean ignoreProxyDownEvent = event.getAction() == MotionEvent.ACTION_DOWN
                && mOverviewEventSender.getProxy() != null;
        boolean result = mStatusBar.isPresenterFullyCollapsed()
                && (mQuickScrubController.onTouchEvent(event)
                || ignoreProxyDownEvent
                || proxyMotionEvents(event));
        if (mDockWindowEnabled) {
            result |= handleDockWindowEvent(event);
        }
        return result;
    }

    public void onDraw(Canvas canvas) {
        if (mOverviewEventSender.getProxy() != null) {
            mQuickScrubController.onDraw(canvas);
@@ -307,20 +321,6 @@ public class NavigationBarGestureHelper implements TunerService.Tunable, Gesture
        return DRAG_MODE_RECENTS;
    }

    public boolean onTouchEvent(MotionEvent event) {
        // The same down event was just sent on intercept and therefore can be ignored here
        boolean ignoreProxyDownEvent = event.getAction() == MotionEvent.ACTION_DOWN
                && mOverviewEventSender.getProxy() != null;
        boolean result = mStatusBar.isPresenterFullyCollapsed()
                && (mQuickScrubController.onTouchEvent(event)
                || ignoreProxyDownEvent
                || proxyMotionEvents(event));
        if (mDockWindowEnabled) {
            result |= handleDockWindowEvent(event);
        }
        return result;
    }

    @Override
    public void onTuningChanged(String key, String newValue) {
        switch (key) {
+9 −8
Original line number Diff line number Diff line
@@ -276,14 +276,6 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
        setUpSwipeUpOnboarding(isConnected);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (mGestureHelper.onTouchEvent(event)) {
            return true;
        }
        return mRecentsAnimationStarted || super.onTouchEvent(event);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        int action = event.getActionMasked();
@@ -300,9 +292,18 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
                }
            }
        }

        return mGestureHelper.onInterceptTouchEvent(event) || mRecentsAnimationStarted;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (mGestureHelper.onTouchEvent(event)) {
            return true;
        }
        return mRecentsAnimationStarted || super.onTouchEvent(event);
    }

    public void abortCurrentGesture() {
        getHomeButton().abortCurrentGesture();
    }
+29 −12
Original line number Diff line number Diff line
@@ -158,9 +158,10 @@ public class QuickScrubController extends GestureDetector.SimpleOnGestureListene
                    } catch (RemoteException e) {
                        Log.e(TAG, "Failed to send start of quick switch.", e);
                    }
                }
                    return true;
                }
                return false;
            }
        };

    public QuickScrubController(Context context) {
@@ -189,6 +190,10 @@ public class QuickScrubController extends GestureDetector.SimpleOnGestureListene
        mNavigationBarView = navigationBarView;
    }

    /**
     * @return true if we want to intercept touch events for quick scrub/switch and prevent proxying
     *         the event to the overview service.
     */
    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        final IOverviewProxy overviewProxy = mOverviewEventSender.getProxy();
@@ -197,7 +202,10 @@ public class QuickScrubController extends GestureDetector.SimpleOnGestureListene
            homeButton.setDelayTouchFeedback(false);
            return false;
        }
        mGestureDetector.onTouchEvent(event);
        if (mGestureDetector.onTouchEvent(event)) {
            // If the fling has been handled, then skip proxying the UP
            return true;
        }
        int action = event.getAction();
        switch (action & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN: {
@@ -240,8 +248,9 @@ public class QuickScrubController extends GestureDetector.SimpleOnGestureListene
                        offset = pos - mTrackRect.left;
                        trackSize = mTrackRect.width();
                    }
                    // Do not start scrubbing when dragging in the perpendicular direction
                    if (!mDraggingActive && exceededPerpendicularTouchSlop) {
                    // Do not start scrubbing when dragging in the perpendicular direction if we
                    // haven't already started quickscrub
                    if (!mDraggingActive && !mQuickScrubActive && exceededPerpendicularTouchSlop) {
                        mHandler.removeCallbacksAndMessages(null);
                        return false;
                    }
@@ -295,6 +304,22 @@ public class QuickScrubController extends GestureDetector.SimpleOnGestureListene
        return mDraggingActive || mQuickScrubActive;
    }

    /**
     * @return true if we want to handle touch events for quick scrub/switch and prevent proxying
     *         the event to the overview service.
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (mGestureDetector.onTouchEvent(event)) {
            // If the fling has been handled, then skip proxying the UP
            return true;
        }
        if (event.getAction() == MotionEvent.ACTION_UP) {
            endQuickScrub();
        }
        return mDraggingActive || mQuickScrubActive;
    }

    @Override
    public void onDraw(Canvas canvas) {
        int color = (int) mTrackColorEvaluator.evaluate(mDarkIntensity, mLightTrackColor,
@@ -340,14 +365,6 @@ public class QuickScrubController extends GestureDetector.SimpleOnGestureListene
        mNavigationBarView.invalidate();
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            endQuickScrub();
        }
        return false;
    }

    @Override
    public void setBarState(boolean isVertical, boolean isRTL) {
        mIsVertical = isVertical;