Merge "Support swiping in both directions for trackpad back gesture" into udc-dev
This commit is contained in:
@@ -234,6 +234,7 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
|
|||||||
private boolean mLogGesture = false;
|
private boolean mLogGesture = false;
|
||||||
private boolean mInRejectedExclusion = false;
|
private boolean mInRejectedExclusion = false;
|
||||||
private boolean mIsOnLeftEdge;
|
private boolean mIsOnLeftEdge;
|
||||||
|
private boolean mDeferSetIsOnLeftEdge;
|
||||||
|
|
||||||
private boolean mIsAttached;
|
private boolean mIsAttached;
|
||||||
private boolean mIsGesturalModeEnabled;
|
private boolean mIsGesturalModeEnabled;
|
||||||
@@ -878,7 +879,9 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
|
|||||||
// either the bouncer is showing or the notification panel is hidden
|
// either the bouncer is showing or the notification panel is hidden
|
||||||
mInputEventReceiver.setBatchingEnabled(false);
|
mInputEventReceiver.setBatchingEnabled(false);
|
||||||
if (isTrackpadEvent) {
|
if (isTrackpadEvent) {
|
||||||
// TODO: show the back arrow based on the direction of the swipe.
|
// Since trackpad gestures don't have zones, this will be determined later by the
|
||||||
|
// direction of the gesture. {@code mIsOnLeftEdge} is set to false to begin with.
|
||||||
|
mDeferSetIsOnLeftEdge = true;
|
||||||
mIsOnLeftEdge = false;
|
mIsOnLeftEdge = false;
|
||||||
} else {
|
} else {
|
||||||
mIsOnLeftEdge = ev.getX() <= mEdgeWidthLeft + mLeftInset;
|
mIsOnLeftEdge = ev.getX() <= mEdgeWidthLeft + mLeftInset;
|
||||||
@@ -899,7 +902,7 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
|
|||||||
mEdgeBackPlugin.onMotionEvent(ev);
|
mEdgeBackPlugin.onMotionEvent(ev);
|
||||||
dispatchToBackAnimation(ev);
|
dispatchToBackAnimation(ev);
|
||||||
}
|
}
|
||||||
if (mLogGesture) {
|
if (mLogGesture || isTrackpadEvent) {
|
||||||
mDownPoint.set(ev.getX(), ev.getY());
|
mDownPoint.set(ev.getX(), ev.getY());
|
||||||
mEndPoint.set(-1, -1);
|
mEndPoint.set(-1, -1);
|
||||||
mThresholdCrossed = false;
|
mThresholdCrossed = false;
|
||||||
@@ -907,9 +910,9 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
|
|||||||
|
|
||||||
// For debugging purposes, only log edge points
|
// For debugging purposes, only log edge points
|
||||||
(isWithinInsets ? mGestureLogInsideInsets : mGestureLogOutsideInsets).log(String.format(
|
(isWithinInsets ? mGestureLogInsideInsets : mGestureLogOutsideInsets).log(String.format(
|
||||||
"Gesture [%d,alw=%B,%B,%B,%B,%B,disp=%s,wl=%d,il=%d,wr=%d,ir=%d,excl=%s]",
|
"Gesture [%d,alw=%B,%B,%B,%B,%B,%B,disp=%s,wl=%d,il=%d,wr=%d,ir=%d,excl=%s]",
|
||||||
System.currentTimeMillis(), isTrackpadEvent, mAllowGesture, mIsOnLeftEdge,
|
System.currentTimeMillis(), isTrackpadEvent, mAllowGesture, mIsOnLeftEdge,
|
||||||
mIsBackGestureAllowed,
|
mDeferSetIsOnLeftEdge, mIsBackGestureAllowed,
|
||||||
QuickStepContract.isBackGestureDisabled(mSysUiFlags), mDisplaySize,
|
QuickStepContract.isBackGestureDisabled(mSysUiFlags), mDisplaySize,
|
||||||
mEdgeWidthLeft, mLeftInset, mEdgeWidthRight, mRightInset, mExcludeRegion));
|
mEdgeWidthLeft, mLeftInset, mEdgeWidthRight, mRightInset, mExcludeRegion));
|
||||||
} else if (mAllowGesture || mLogGesture) {
|
} else if (mAllowGesture || mLogGesture) {
|
||||||
@@ -928,6 +931,14 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
|
|||||||
mLogGesture = false;
|
mLogGesture = false;
|
||||||
return;
|
return;
|
||||||
} else if (action == MotionEvent.ACTION_MOVE) {
|
} else if (action == MotionEvent.ACTION_MOVE) {
|
||||||
|
if (isTrackpadEvent && mDeferSetIsOnLeftEdge) {
|
||||||
|
// mIsOnLeftEdge is determined by the relative position between the down
|
||||||
|
// and the current motion event for trackpad gestures instead of zoning.
|
||||||
|
mIsOnLeftEdge = mEndPoint.x > mDownPoint.x;
|
||||||
|
mEdgeBackPlugin.setIsLeftPanel(mIsOnLeftEdge);
|
||||||
|
mDeferSetIsOnLeftEdge = false;
|
||||||
|
}
|
||||||
|
|
||||||
if ((ev.getEventTime() - ev.getDownTime()) > mLongPressTimeout) {
|
if ((ev.getEventTime() - ev.getDownTime()) > mLongPressTimeout) {
|
||||||
if (mAllowGesture) {
|
if (mAllowGesture) {
|
||||||
logGesture(SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE_LONG_PRESS);
|
logGesture(SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE_LONG_PRESS);
|
||||||
|
|||||||
Reference in New Issue
Block a user