Loading quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java +19 −31 Original line number Diff line number Diff line Loading @@ -35,19 +35,15 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; import android.graphics.PointF; import android.graphics.Rect; import android.os.Build; import android.os.Handler; import android.os.Looper; import android.view.Display; import android.view.MotionEvent; import android.view.Surface; import android.view.VelocityTracker; import android.view.ViewConfiguration; import android.view.WindowManager; import androidx.annotation.UiThread; import com.android.launcher3.R; import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.RaceConditionTracker; Loading @@ -62,10 +58,11 @@ import com.android.systemui.shared.system.BackgroundExecutor; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InputMonitorCompat; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.WindowManagerWrapper; import java.util.function.Consumer; import androidx.annotation.UiThread; /** * Input consumer for handling events originating from an activity other than Launcher */ Loading @@ -81,14 +78,12 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC private final Intent mHomeIntent; private final ActivityControlHelper mActivityControlHelper; private final OverviewCallbacks mOverviewCallbacks; private final TaskOverlayFactory mTaskOverlayFactory; private final InputConsumerController mInputConsumer; private final SwipeSharedState mSwipeSharedState; private final InputMonitorCompat mInputMonitorCompat; private final SysUINavigationMode.Mode mMode; private final int mDisplayRotation; private final Rect mStableInsets = new Rect(); private final Consumer<OtherActivityInputConsumer> mOnCompleteCallback; private final MotionPauseDetector mMotionPauseDetector; Loading Loading @@ -123,7 +118,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC public OtherActivityInputConsumer(Context base, RunningTaskInfo runningTaskInfo, RecentsModel recentsModel, Intent homeIntent, ActivityControlHelper activityControl, boolean isDeferredDownTarget, OverviewCallbacks overviewCallbacks, TaskOverlayFactory taskOverlayFactory, InputConsumerController inputConsumer, InputConsumerController inputConsumer, Consumer<OtherActivityInputConsumer> onCompleteCallback, SwipeSharedState swipeSharedState, InputMonitorCompat inputMonitorCompat) { super(base); Loading @@ -145,14 +140,10 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC boolean continuingPreviousGesture = swipeSharedState.getActiveListener() != null; mIsDeferredDownTarget = !continuingPreviousGesture && isDeferredDownTarget; mOverviewCallbacks = overviewCallbacks; mTaskOverlayFactory = taskOverlayFactory; mInputConsumer = inputConsumer; mSwipeSharedState = swipeSharedState; Display display = getSystemService(WindowManager.class).getDefaultDisplay(); mDisplayRotation = display.getRotation(); WindowManagerWrapper.getInstance().getStableInsets(mStableInsets); mDisplayRotation = getSystemService(WindowManager.class).getDefaultDisplay().getRotation(); mDragSlop = QuickStepContract.getQuickStepDragSlopPx(); mTouchSlop = QuickStepContract.getQuickStepTouchSlopPx(); Loading @@ -171,16 +162,15 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } // Proxy events to recents view if (!isNavBarOnLeft() && !isNavBarOnRight()) { if (mPassedDragSlop && mInteractionHandler != null && !mRecentsViewDispatcher.hasConsumer()) { mRecentsViewDispatcher.setConsumer(mInteractionHandler.getRecentsViewDispatcher()); mRecentsViewDispatcher.setConsumer(mInteractionHandler .getRecentsViewDispatcher(isNavBarOnLeft() || isNavBarOnRight())); } int edgeFlags = ev.getEdgeFlags(); ev.setEdgeFlags(edgeFlags | EDGE_NAV_BAR); mRecentsViewDispatcher.dispatchEvent(ev); ev.setEdgeFlags(edgeFlags); } mVelocityTracker.addMovement(ev); if (ev.getActionMasked() == ACTION_POINTER_UP) { Loading Loading @@ -302,13 +292,11 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } private boolean isNavBarOnRight() { return SysUINavigationMode.INSTANCE.get(getBaseContext()).getMode() != NO_BUTTON && mDisplayRotation == Surface.ROTATION_90 && mStableInsets.right > 0; return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_90; } private boolean isNavBarOnLeft() { return SysUINavigationMode.INSTANCE.get(getBaseContext()).getMode() != NO_BUTTON && mDisplayRotation == Surface.ROTATION_270 && mStableInsets.left > 0; return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_270; } private void startTouchTrackingForWindowAnimation(long touchTimeMs) { Loading Loading @@ -414,13 +402,13 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } private float getDisplacement(MotionEvent ev) { float eventX = ev.getX(); float eventY = ev.getY(); float displacement = eventY - mDownPos.y; final float displacement; if (isNavBarOnRight()) { displacement = eventX - mDownPos.x; displacement = ev.getX() - mDownPos.x; } else if (isNavBarOnLeft()) { displacement = mDownPos.x - eventX; displacement = mDownPos.x - ev.getX(); } else { displacement = ev.getY() - mDownPos.y; } return displacement; } Loading quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java +2 −2 Original line number Diff line number Diff line Loading @@ -492,8 +492,8 @@ public class TouchInteractionService extends Service implements boolean shouldDefer = activityControl.deferStartingActivity(mActiveNavBarRegion, event); return new OtherActivityInputConsumer(this, runningTaskInfo, mRecentsModel, mOverviewComponentObserver.getOverviewIntent(), activityControl, shouldDefer, mOverviewCallbacks, mTaskOverlayFactory, mInputConsumer, this::onConsumerInactive, mSwipeSharedState, mInputMonitorCompat); shouldDefer, mOverviewCallbacks, mInputConsumer, this::onConsumerInactive, mSwipeSharedState, mInputMonitorCompat); } /** Loading quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java +2 −2 Original line number Diff line number Diff line Loading @@ -531,8 +531,8 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> return TaskView.getCurveScaleForInterpolation(interpolation); } public Consumer<MotionEvent> getRecentsViewDispatcher() { return mRecentsView != null ? mRecentsView::dispatchTouchEvent : null; public Consumer<MotionEvent> getRecentsViewDispatcher(boolean isTransposed) { return mRecentsView != null ? mRecentsView.getEventDispatcher(isTransposed) : null; } @UiThread Loading quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java +26 −3 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Point; import android.graphics.Rect; import android.graphics.RectF; Loading @@ -70,9 +71,6 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.ListView; import androidx.annotation.Nullable; import androidx.dynamicanimation.animation.SpringForce; import com.android.launcher3.BaseActivity; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Insettable; Loading Loading @@ -111,6 +109,9 @@ import com.android.systemui.shared.system.TaskStackChangeListener; import java.util.ArrayList; import java.util.function.Consumer; import androidx.annotation.Nullable; import androidx.dynamicanimation.animation.SpringForce; /** * A list of recent tasks. */ Loading Loading @@ -1639,4 +1640,26 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl public ClearAllButton getClearAllButton() { return mClearAllButton; } public Consumer<MotionEvent> getEventDispatcher(boolean isTransposed) { if (isTransposed) { Matrix transform = new Matrix(); transform.setRotate(90); if (getWidth() > 0 && getHeight() > 0) { float scale = ((float) getWidth()) / getHeight(); transform.postScale(scale, 1 / scale); } Matrix inverse = new Matrix(); transform.invert(inverse); return e -> { e.transform(transform); super.onTouchEvent(e); e.transform(inverse); }; } else { return super::onTouchEvent; } } } src/com/android/launcher3/PagedView.java +1 −3 Original line number Diff line number Diff line Loading @@ -1088,10 +1088,8 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou @Override public boolean onTouchEvent(MotionEvent ev) { super.onTouchEvent(ev); // Skip touch handling if there are no pages to swipe if (getChildCount() <= 0) return super.onTouchEvent(ev); if (getChildCount() <= 0) return false; acquireVelocityTrackerAndAddMovement(ev); Loading Loading
quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java +19 −31 Original line number Diff line number Diff line Loading @@ -35,19 +35,15 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; import android.graphics.PointF; import android.graphics.Rect; import android.os.Build; import android.os.Handler; import android.os.Looper; import android.view.Display; import android.view.MotionEvent; import android.view.Surface; import android.view.VelocityTracker; import android.view.ViewConfiguration; import android.view.WindowManager; import androidx.annotation.UiThread; import com.android.launcher3.R; import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.RaceConditionTracker; Loading @@ -62,10 +58,11 @@ import com.android.systemui.shared.system.BackgroundExecutor; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InputMonitorCompat; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.WindowManagerWrapper; import java.util.function.Consumer; import androidx.annotation.UiThread; /** * Input consumer for handling events originating from an activity other than Launcher */ Loading @@ -81,14 +78,12 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC private final Intent mHomeIntent; private final ActivityControlHelper mActivityControlHelper; private final OverviewCallbacks mOverviewCallbacks; private final TaskOverlayFactory mTaskOverlayFactory; private final InputConsumerController mInputConsumer; private final SwipeSharedState mSwipeSharedState; private final InputMonitorCompat mInputMonitorCompat; private final SysUINavigationMode.Mode mMode; private final int mDisplayRotation; private final Rect mStableInsets = new Rect(); private final Consumer<OtherActivityInputConsumer> mOnCompleteCallback; private final MotionPauseDetector mMotionPauseDetector; Loading Loading @@ -123,7 +118,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC public OtherActivityInputConsumer(Context base, RunningTaskInfo runningTaskInfo, RecentsModel recentsModel, Intent homeIntent, ActivityControlHelper activityControl, boolean isDeferredDownTarget, OverviewCallbacks overviewCallbacks, TaskOverlayFactory taskOverlayFactory, InputConsumerController inputConsumer, InputConsumerController inputConsumer, Consumer<OtherActivityInputConsumer> onCompleteCallback, SwipeSharedState swipeSharedState, InputMonitorCompat inputMonitorCompat) { super(base); Loading @@ -145,14 +140,10 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC boolean continuingPreviousGesture = swipeSharedState.getActiveListener() != null; mIsDeferredDownTarget = !continuingPreviousGesture && isDeferredDownTarget; mOverviewCallbacks = overviewCallbacks; mTaskOverlayFactory = taskOverlayFactory; mInputConsumer = inputConsumer; mSwipeSharedState = swipeSharedState; Display display = getSystemService(WindowManager.class).getDefaultDisplay(); mDisplayRotation = display.getRotation(); WindowManagerWrapper.getInstance().getStableInsets(mStableInsets); mDisplayRotation = getSystemService(WindowManager.class).getDefaultDisplay().getRotation(); mDragSlop = QuickStepContract.getQuickStepDragSlopPx(); mTouchSlop = QuickStepContract.getQuickStepTouchSlopPx(); Loading @@ -171,16 +162,15 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } // Proxy events to recents view if (!isNavBarOnLeft() && !isNavBarOnRight()) { if (mPassedDragSlop && mInteractionHandler != null && !mRecentsViewDispatcher.hasConsumer()) { mRecentsViewDispatcher.setConsumer(mInteractionHandler.getRecentsViewDispatcher()); mRecentsViewDispatcher.setConsumer(mInteractionHandler .getRecentsViewDispatcher(isNavBarOnLeft() || isNavBarOnRight())); } int edgeFlags = ev.getEdgeFlags(); ev.setEdgeFlags(edgeFlags | EDGE_NAV_BAR); mRecentsViewDispatcher.dispatchEvent(ev); ev.setEdgeFlags(edgeFlags); } mVelocityTracker.addMovement(ev); if (ev.getActionMasked() == ACTION_POINTER_UP) { Loading Loading @@ -302,13 +292,11 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } private boolean isNavBarOnRight() { return SysUINavigationMode.INSTANCE.get(getBaseContext()).getMode() != NO_BUTTON && mDisplayRotation == Surface.ROTATION_90 && mStableInsets.right > 0; return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_90; } private boolean isNavBarOnLeft() { return SysUINavigationMode.INSTANCE.get(getBaseContext()).getMode() != NO_BUTTON && mDisplayRotation == Surface.ROTATION_270 && mStableInsets.left > 0; return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_270; } private void startTouchTrackingForWindowAnimation(long touchTimeMs) { Loading Loading @@ -414,13 +402,13 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } private float getDisplacement(MotionEvent ev) { float eventX = ev.getX(); float eventY = ev.getY(); float displacement = eventY - mDownPos.y; final float displacement; if (isNavBarOnRight()) { displacement = eventX - mDownPos.x; displacement = ev.getX() - mDownPos.x; } else if (isNavBarOnLeft()) { displacement = mDownPos.x - eventX; displacement = mDownPos.x - ev.getX(); } else { displacement = ev.getY() - mDownPos.y; } return displacement; } Loading
quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java +2 −2 Original line number Diff line number Diff line Loading @@ -492,8 +492,8 @@ public class TouchInteractionService extends Service implements boolean shouldDefer = activityControl.deferStartingActivity(mActiveNavBarRegion, event); return new OtherActivityInputConsumer(this, runningTaskInfo, mRecentsModel, mOverviewComponentObserver.getOverviewIntent(), activityControl, shouldDefer, mOverviewCallbacks, mTaskOverlayFactory, mInputConsumer, this::onConsumerInactive, mSwipeSharedState, mInputMonitorCompat); shouldDefer, mOverviewCallbacks, mInputConsumer, this::onConsumerInactive, mSwipeSharedState, mInputMonitorCompat); } /** Loading
quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java +2 −2 Original line number Diff line number Diff line Loading @@ -531,8 +531,8 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> return TaskView.getCurveScaleForInterpolation(interpolation); } public Consumer<MotionEvent> getRecentsViewDispatcher() { return mRecentsView != null ? mRecentsView::dispatchTouchEvent : null; public Consumer<MotionEvent> getRecentsViewDispatcher(boolean isTransposed) { return mRecentsView != null ? mRecentsView.getEventDispatcher(isTransposed) : null; } @UiThread Loading
quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java +26 −3 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Point; import android.graphics.Rect; import android.graphics.RectF; Loading @@ -70,9 +71,6 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.ListView; import androidx.annotation.Nullable; import androidx.dynamicanimation.animation.SpringForce; import com.android.launcher3.BaseActivity; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Insettable; Loading Loading @@ -111,6 +109,9 @@ import com.android.systemui.shared.system.TaskStackChangeListener; import java.util.ArrayList; import java.util.function.Consumer; import androidx.annotation.Nullable; import androidx.dynamicanimation.animation.SpringForce; /** * A list of recent tasks. */ Loading Loading @@ -1639,4 +1640,26 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl public ClearAllButton getClearAllButton() { return mClearAllButton; } public Consumer<MotionEvent> getEventDispatcher(boolean isTransposed) { if (isTransposed) { Matrix transform = new Matrix(); transform.setRotate(90); if (getWidth() > 0 && getHeight() > 0) { float scale = ((float) getWidth()) / getHeight(); transform.postScale(scale, 1 / scale); } Matrix inverse = new Matrix(); transform.invert(inverse); return e -> { e.transform(transform); super.onTouchEvent(e); e.transform(inverse); }; } else { return super::onTouchEvent; } } }
src/com/android/launcher3/PagedView.java +1 −3 Original line number Diff line number Diff line Loading @@ -1088,10 +1088,8 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou @Override public boolean onTouchEvent(MotionEvent ev) { super.onTouchEvent(ev); // Skip touch handling if there are no pages to swipe if (getChildCount() <= 0) return super.onTouchEvent(ev); if (getChildCount() <= 0) return false; acquireVelocityTrackerAndAddMovement(ev); Loading