Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java +4 −5 Original line number Diff line number Diff line Loading @@ -17,8 +17,7 @@ package com.android.wm.shell.pip.phone; import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_EXPAND_OR_UNEXPAND; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_LEFT; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -371,9 +370,9 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, /** * Stash PiP to the closest edge. We set velocityY to 0 to limit pure horizontal motion. */ void stashToEdge(float velocityX, @Nullable Runnable postBoundsUpdateCallback) { mPipBoundsState.setStashed(velocityX < 0 ? STASH_TYPE_LEFT : STASH_TYPE_RIGHT); movetoTarget(velocityX, 0 /* velocityY */, postBoundsUpdateCallback, true /* isStash */); void stashToEdge(float velX, float velY, @Nullable Runnable postBoundsUpdateCallback) { velY = mPipBoundsState.getStashedState() == STASH_TYPE_NONE ? 0 : velY; movetoTarget(velX, velY, postBoundsUpdateCallback, true /* isStash */); } private void movetoTarget( Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java +14 −8 Original line number Diff line number Diff line Loading @@ -19,7 +19,9 @@ package com.android.wm.shell.pip.phone; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.PIP_STASHING; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.PIP_STASH_MINIMUM_VELOCITY_THRESHOLD; import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_LEFT; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT; import static com.android.wm.shell.pip.phone.PhonePipMenuController.MENU_STATE_CLOSE; import static com.android.wm.shell.pip.phone.PhonePipMenuController.MENU_STATE_FULL; import static com.android.wm.shell.pip.phone.PhonePipMenuController.MENU_STATE_NONE; Loading Loading @@ -810,7 +812,6 @@ public class PipTouchHandler { } if (touchState.startedDragging()) { mPipBoundsState.setStashed(STASH_TYPE_NONE); mSavedSnapFraction = -1f; mPipDismissTargetHandler.showDismissTargetMaybe(); } Loading Loading @@ -863,10 +864,10 @@ public class PipTouchHandler { // Reset the touch state on up before the fling settles mTouchState.reset(); if (mEnableStash && !mPipBoundsState.isStashed() && shouldStash(vel, getPossiblyMotionBounds())) { mMotionHelper.stashToEdge(vel.x, this::stashEndAction /* endAction */); if (mEnableStash && shouldStash(vel, getPossiblyMotionBounds())) { mMotionHelper.stashToEdge(vel.x, vel.y, this::stashEndAction /* endAction */); } else { mPipBoundsState.setStashed(STASH_TYPE_NONE); mMotionHelper.flingToSnapTarget(vel.x, vel.y, this::flingEndAction /* endAction */); } Loading Loading @@ -920,6 +921,11 @@ public class PipTouchHandler { && mPipExclusionBoundsChangeListener.get() != null) { mPipExclusionBoundsChangeListener.get().accept(mPipBoundsState.getBounds()); } if (mPipBoundsState.getBounds().left < 0) { mPipBoundsState.setStashed(STASH_TYPE_LEFT); } else { mPipBoundsState.setStashed(STASH_TYPE_RIGHT); } } private void flingEndAction() { Loading @@ -937,12 +943,12 @@ public class PipTouchHandler { private boolean shouldStash(PointF vel, Rect motionBounds) { // If user flings the PIP window above the minimum velocity, stash PIP. // Only allow stashing to the edge if the user starts dragging the PIP from the // opposite edge. // Only allow stashing to the edge if PIP wasn't previously stashed on the opposite // edge. final boolean stashFromFlingToEdge = ((vel.x < -mStashVelocityThreshold && mDownSavedFraction > 1f && mDownSavedFraction < 2f) && mPipBoundsState.getStashedState() != STASH_TYPE_RIGHT) || (vel.x > mStashVelocityThreshold && mDownSavedFraction > 3f && mDownSavedFraction < 4f)); && mPipBoundsState.getStashedState() != STASH_TYPE_LEFT)); // If User releases the PIP window while it's out of the display bounds, put // PIP into stashed mode. Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java +4 −5 Original line number Diff line number Diff line Loading @@ -17,8 +17,7 @@ package com.android.wm.shell.pip.phone; import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_EXPAND_OR_UNEXPAND; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_LEFT; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -371,9 +370,9 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, /** * Stash PiP to the closest edge. We set velocityY to 0 to limit pure horizontal motion. */ void stashToEdge(float velocityX, @Nullable Runnable postBoundsUpdateCallback) { mPipBoundsState.setStashed(velocityX < 0 ? STASH_TYPE_LEFT : STASH_TYPE_RIGHT); movetoTarget(velocityX, 0 /* velocityY */, postBoundsUpdateCallback, true /* isStash */); void stashToEdge(float velX, float velY, @Nullable Runnable postBoundsUpdateCallback) { velY = mPipBoundsState.getStashedState() == STASH_TYPE_NONE ? 0 : velY; movetoTarget(velX, velY, postBoundsUpdateCallback, true /* isStash */); } private void movetoTarget( Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java +14 −8 Original line number Diff line number Diff line Loading @@ -19,7 +19,9 @@ package com.android.wm.shell.pip.phone; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.PIP_STASHING; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.PIP_STASH_MINIMUM_VELOCITY_THRESHOLD; import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_LEFT; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT; import static com.android.wm.shell.pip.phone.PhonePipMenuController.MENU_STATE_CLOSE; import static com.android.wm.shell.pip.phone.PhonePipMenuController.MENU_STATE_FULL; import static com.android.wm.shell.pip.phone.PhonePipMenuController.MENU_STATE_NONE; Loading Loading @@ -810,7 +812,6 @@ public class PipTouchHandler { } if (touchState.startedDragging()) { mPipBoundsState.setStashed(STASH_TYPE_NONE); mSavedSnapFraction = -1f; mPipDismissTargetHandler.showDismissTargetMaybe(); } Loading Loading @@ -863,10 +864,10 @@ public class PipTouchHandler { // Reset the touch state on up before the fling settles mTouchState.reset(); if (mEnableStash && !mPipBoundsState.isStashed() && shouldStash(vel, getPossiblyMotionBounds())) { mMotionHelper.stashToEdge(vel.x, this::stashEndAction /* endAction */); if (mEnableStash && shouldStash(vel, getPossiblyMotionBounds())) { mMotionHelper.stashToEdge(vel.x, vel.y, this::stashEndAction /* endAction */); } else { mPipBoundsState.setStashed(STASH_TYPE_NONE); mMotionHelper.flingToSnapTarget(vel.x, vel.y, this::flingEndAction /* endAction */); } Loading Loading @@ -920,6 +921,11 @@ public class PipTouchHandler { && mPipExclusionBoundsChangeListener.get() != null) { mPipExclusionBoundsChangeListener.get().accept(mPipBoundsState.getBounds()); } if (mPipBoundsState.getBounds().left < 0) { mPipBoundsState.setStashed(STASH_TYPE_LEFT); } else { mPipBoundsState.setStashed(STASH_TYPE_RIGHT); } } private void flingEndAction() { Loading @@ -937,12 +943,12 @@ public class PipTouchHandler { private boolean shouldStash(PointF vel, Rect motionBounds) { // If user flings the PIP window above the minimum velocity, stash PIP. // Only allow stashing to the edge if the user starts dragging the PIP from the // opposite edge. // Only allow stashing to the edge if PIP wasn't previously stashed on the opposite // edge. final boolean stashFromFlingToEdge = ((vel.x < -mStashVelocityThreshold && mDownSavedFraction > 1f && mDownSavedFraction < 2f) && mPipBoundsState.getStashedState() != STASH_TYPE_RIGHT) || (vel.x > mStashVelocityThreshold && mDownSavedFraction > 3f && mDownSavedFraction < 4f)); && mPipBoundsState.getStashedState() != STASH_TYPE_LEFT)); // If User releases the PIP window while it's out of the display bounds, put // PIP into stashed mode. Loading