Merge "Fix add and remove times for visual indicator" into udc-dev am: ed2c114460 am: 73c5e080de am: 6fca05b571
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22499848 Change-Id: I8b5da82d1405fed17fb53aa2860321faaf90d025 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -162,7 +162,7 @@ public class DesktopModeVisualIndicator {
|
|||||||
/**
|
/**
|
||||||
* Release the indicator and its components when it is no longer needed.
|
* Release the indicator and its components when it is no longer needed.
|
||||||
*/
|
*/
|
||||||
public void releaseVisualIndicator() {
|
public void releaseVisualIndicator(SurfaceControl.Transaction t) {
|
||||||
if (mViewHost == null) return;
|
if (mViewHost == null) return;
|
||||||
if (mViewHost != null) {
|
if (mViewHost != null) {
|
||||||
mViewHost.release();
|
mViewHost.release();
|
||||||
@@ -170,13 +170,8 @@ public class DesktopModeVisualIndicator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mLeash != null) {
|
if (mLeash != null) {
|
||||||
final SurfaceControl.Transaction t = new SurfaceControl.Transaction();
|
|
||||||
t.remove(mLeash);
|
t.remove(mLeash);
|
||||||
mLeash = null;
|
mLeash = null;
|
||||||
mSyncQueue.runInSync(transaction -> {
|
|
||||||
transaction.merge(t);
|
|
||||||
t.close();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,11 @@ class DesktopTasksController(
|
|||||||
|
|
||||||
private val desktopMode: DesktopModeImpl
|
private val desktopMode: DesktopModeImpl
|
||||||
private var visualIndicator: DesktopModeVisualIndicator? = null
|
private var visualIndicator: DesktopModeVisualIndicator? = null
|
||||||
|
private val mOnAnimationFinishedCallback = Consumer<SurfaceControl.Transaction> {
|
||||||
|
t: SurfaceControl.Transaction ->
|
||||||
|
visualIndicator?.releaseVisualIndicator(t)
|
||||||
|
visualIndicator = null
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
desktopMode = DesktopModeImpl()
|
desktopMode = DesktopModeImpl()
|
||||||
@@ -154,14 +159,14 @@ class DesktopTasksController(
|
|||||||
|
|
||||||
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
||||||
enterDesktopTaskTransitionHandler.startTransition(
|
enterDesktopTaskTransitionHandler.startTransition(
|
||||||
Transitions.TRANSIT_ENTER_FREEFORM, wct)
|
Transitions.TRANSIT_ENTER_FREEFORM, wct, mOnAnimationFinishedCallback)
|
||||||
} else {
|
} else {
|
||||||
shellTaskOrganizer.applyTransaction(wct)
|
shellTaskOrganizer.applyTransaction(wct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Brings apps to front and sets freeform task bounds */
|
/** Brings apps to front and sets freeform task bounds */
|
||||||
fun moveToDesktopWithAnimation(
|
private fun moveToDesktopWithAnimation(
|
||||||
taskInfo: RunningTaskInfo,
|
taskInfo: RunningTaskInfo,
|
||||||
freeformBounds: Rect
|
freeformBounds: Rect
|
||||||
) {
|
) {
|
||||||
@@ -172,9 +177,10 @@ class DesktopTasksController(
|
|||||||
|
|
||||||
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
||||||
enterDesktopTaskTransitionHandler.startTransition(
|
enterDesktopTaskTransitionHandler.startTransition(
|
||||||
Transitions.TRANSIT_ENTER_DESKTOP_MODE, wct)
|
Transitions.TRANSIT_ENTER_DESKTOP_MODE, wct, mOnAnimationFinishedCallback)
|
||||||
} else {
|
} else {
|
||||||
shellTaskOrganizer.applyTransaction(wct)
|
shellTaskOrganizer.applyTransaction(wct)
|
||||||
|
releaseVisualIndicator()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,21 +211,24 @@ class DesktopTasksController(
|
|||||||
val wct = WindowContainerTransaction()
|
val wct = WindowContainerTransaction()
|
||||||
addMoveToFullscreenChanges(wct, task.token)
|
addMoveToFullscreenChanges(wct, task.token)
|
||||||
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
||||||
enterDesktopTaskTransitionHandler.startCancelMoveToDesktopMode(wct, startPosition)
|
enterDesktopTaskTransitionHandler.startCancelMoveToDesktopMode(wct, startPosition,
|
||||||
|
mOnAnimationFinishedCallback)
|
||||||
} else {
|
} else {
|
||||||
shellTaskOrganizer.applyTransaction(wct)
|
shellTaskOrganizer.applyTransaction(wct)
|
||||||
|
releaseVisualIndicator()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun moveToFullscreenWithAnimation(task: ActivityManager.RunningTaskInfo) {
|
private fun moveToFullscreenWithAnimation(task: ActivityManager.RunningTaskInfo) {
|
||||||
val wct = WindowContainerTransaction()
|
val wct = WindowContainerTransaction()
|
||||||
addMoveToFullscreenChanges(wct, task.token)
|
addMoveToFullscreenChanges(wct, task.token)
|
||||||
|
|
||||||
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
||||||
exitDesktopTaskTransitionHandler.startTransition(
|
exitDesktopTaskTransitionHandler.startTransition(
|
||||||
Transitions.TRANSIT_EXIT_DESKTOP_MODE, wct)
|
Transitions.TRANSIT_EXIT_DESKTOP_MODE, wct, mOnAnimationFinishedCallback)
|
||||||
} else {
|
} else {
|
||||||
shellTaskOrganizer.applyTransaction(wct)
|
shellTaskOrganizer.applyTransaction(wct)
|
||||||
|
releaseVisualIndicator()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,6 +339,16 @@ class DesktopTasksController(
|
|||||||
?.let { homeTask -> wct.reorder(homeTask.getToken(), true /* onTop */) }
|
?.let { homeTask -> wct.reorder(homeTask.getToken(), true /* onTop */) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun releaseVisualIndicator() {
|
||||||
|
val t = SurfaceControl.Transaction()
|
||||||
|
visualIndicator?.releaseVisualIndicator(t)
|
||||||
|
visualIndicator = null
|
||||||
|
syncQueue.runInSync { transaction ->
|
||||||
|
transaction.merge(t)
|
||||||
|
t.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun getContext(): Context {
|
override fun getContext(): Context {
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
@@ -471,8 +490,7 @@ class DesktopTasksController(
|
|||||||
rootTaskDisplayAreaOrganizer)
|
rootTaskDisplayAreaOrganizer)
|
||||||
visualIndicator?.createFullscreenIndicatorWithAnimatedBounds()
|
visualIndicator?.createFullscreenIndicatorWithAnimatedBounds()
|
||||||
} else if (y > statusBarHeight && visualIndicator != null) {
|
} else if (y > statusBarHeight && visualIndicator != null) {
|
||||||
visualIndicator?.releaseVisualIndicator()
|
releaseVisualIndicator()
|
||||||
visualIndicator = null
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -489,8 +507,6 @@ class DesktopTasksController(
|
|||||||
) {
|
) {
|
||||||
val statusBarHeight = getStatusBarHeight(taskInfo)
|
val statusBarHeight = getStatusBarHeight(taskInfo)
|
||||||
if (y <= statusBarHeight && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM) {
|
if (y <= statusBarHeight && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM) {
|
||||||
visualIndicator?.releaseVisualIndicator()
|
|
||||||
visualIndicator = null
|
|
||||||
moveToFullscreenWithAnimation(taskInfo)
|
moveToFullscreenWithAnimation(taskInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -508,6 +524,11 @@ class DesktopTasksController(
|
|||||||
taskSurface: SurfaceControl,
|
taskSurface: SurfaceControl,
|
||||||
y: Float
|
y: Float
|
||||||
) {
|
) {
|
||||||
|
// If the motion event is above the status bar, return since we do not need to show the
|
||||||
|
// visual indicator at this point.
|
||||||
|
if (y < getStatusBarHeight(taskInfo)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if (visualIndicator == null) {
|
if (visualIndicator == null) {
|
||||||
visualIndicator = DesktopModeVisualIndicator(syncQueue, taskInfo,
|
visualIndicator = DesktopModeVisualIndicator(syncQueue, taskInfo,
|
||||||
displayController, context, taskSurface, shellTaskOrganizer,
|
displayController, context, taskSurface, shellTaskOrganizer,
|
||||||
@@ -535,11 +556,8 @@ class DesktopTasksController(
|
|||||||
freeformBounds: Rect
|
freeformBounds: Rect
|
||||||
) {
|
) {
|
||||||
moveToDesktopWithAnimation(taskInfo, freeformBounds)
|
moveToDesktopWithAnimation(taskInfo, freeformBounds)
|
||||||
visualIndicator?.releaseVisualIndicator()
|
|
||||||
visualIndicator = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun getStatusBarHeight(taskInfo: RunningTaskInfo): Int {
|
private fun getStatusBarHeight(taskInfo: RunningTaskInfo): Int {
|
||||||
return displayController.getDisplayLayout(taskInfo.displayId)?.stableInsets()?.top ?: 0
|
return displayController.getDisplayLayout(taskInfo.displayId)?.stableInsets()?.top ?: 0
|
||||||
}
|
}
|
||||||
@@ -566,7 +584,6 @@ class DesktopTasksController(
|
|||||||
desktopModeTaskRepository.removeTaskCorners(taskId)
|
desktopModeTaskRepository.removeTaskCorners(taskId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a listener to find out about changes in the visibility of freeform tasks.
|
* Adds a listener to find out about changes in the visibility of freeform tasks.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import com.android.wm.shell.transition.Transitions;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,6 +59,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
|||||||
|
|
||||||
private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
|
private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
|
||||||
private Point mStartPosition;
|
private Point mStartPosition;
|
||||||
|
private Consumer<SurfaceControl.Transaction> mOnAnimationFinishedCallback;
|
||||||
|
|
||||||
public EnterDesktopTaskTransitionHandler(
|
public EnterDesktopTaskTransitionHandler(
|
||||||
Transitions transitions) {
|
Transitions transitions) {
|
||||||
@@ -75,9 +77,12 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
|||||||
* Starts Transition of a given type
|
* Starts Transition of a given type
|
||||||
* @param type Transition type
|
* @param type Transition type
|
||||||
* @param wct WindowContainerTransaction for transition
|
* @param wct WindowContainerTransaction for transition
|
||||||
|
* @param onAnimationEndCallback to be called after animation
|
||||||
*/
|
*/
|
||||||
public void startTransition(@WindowManager.TransitionType int type,
|
public void startTransition(@WindowManager.TransitionType int type,
|
||||||
@NonNull WindowContainerTransaction wct) {
|
@NonNull WindowContainerTransaction wct,
|
||||||
|
Consumer<SurfaceControl.Transaction> onAnimationEndCallback) {
|
||||||
|
mOnAnimationFinishedCallback = onAnimationEndCallback;
|
||||||
final IBinder token = mTransitions.startTransition(type, wct, this);
|
final IBinder token = mTransitions.startTransition(type, wct, this);
|
||||||
mPendingTransitionTokens.add(token);
|
mPendingTransitionTokens.add(token);
|
||||||
}
|
}
|
||||||
@@ -86,11 +91,14 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
|||||||
* Starts Transition of type TRANSIT_CANCEL_ENTERING_DESKTOP_MODE
|
* Starts Transition of type TRANSIT_CANCEL_ENTERING_DESKTOP_MODE
|
||||||
* @param wct WindowContainerTransaction for transition
|
* @param wct WindowContainerTransaction for transition
|
||||||
* @param startPosition Position of task when transition is triggered
|
* @param startPosition Position of task when transition is triggered
|
||||||
|
* @param onAnimationEndCallback to be called after animation
|
||||||
*/
|
*/
|
||||||
public void startCancelMoveToDesktopMode(@NonNull WindowContainerTransaction wct,
|
public void startCancelMoveToDesktopMode(@NonNull WindowContainerTransaction wct,
|
||||||
Point startPosition) {
|
Point startPosition,
|
||||||
|
Consumer<SurfaceControl.Transaction> onAnimationEndCallback) {
|
||||||
mStartPosition = startPosition;
|
mStartPosition = startPosition;
|
||||||
startTransition(Transitions.TRANSIT_CANCEL_ENTERING_DESKTOP_MODE, wct);
|
startTransition(Transitions.TRANSIT_CANCEL_ENTERING_DESKTOP_MODE, wct,
|
||||||
|
mOnAnimationFinishedCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -111,7 +119,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
|||||||
|
|
||||||
if (change.getMode() == WindowManager.TRANSIT_CHANGE) {
|
if (change.getMode() == WindowManager.TRANSIT_CHANGE) {
|
||||||
transitionHandled |= startChangeTransition(
|
transitionHandled |= startChangeTransition(
|
||||||
transition, info.getType(), change, startT, finishCallback);
|
transition, info.getType(), change, startT, finishT, finishCallback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,6 +133,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
|||||||
@WindowManager.TransitionType int type,
|
@WindowManager.TransitionType int type,
|
||||||
@NonNull TransitionInfo.Change change,
|
@NonNull TransitionInfo.Change change,
|
||||||
@NonNull SurfaceControl.Transaction startT,
|
@NonNull SurfaceControl.Transaction startT,
|
||||||
|
@NonNull SurfaceControl.Transaction finishT,
|
||||||
@NonNull Transitions.TransitionFinishCallback finishCallback) {
|
@NonNull Transitions.TransitionFinishCallback finishCallback) {
|
||||||
if (!mPendingTransitionTokens.contains(transition)) {
|
if (!mPendingTransitionTokens.contains(transition)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -178,6 +187,9 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
|||||||
animator.addListener(new AnimatorListenerAdapter() {
|
animator.addListener(new AnimatorListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
|
if (mOnAnimationFinishedCallback != null) {
|
||||||
|
mOnAnimationFinishedCallback.accept(finishT);
|
||||||
|
}
|
||||||
mTransitions.getMainExecutor().execute(
|
mTransitions.getMainExecutor().execute(
|
||||||
() -> finishCallback.onTransitionFinished(null, null));
|
() -> finishCallback.onTransitionFinished(null, null));
|
||||||
}
|
}
|
||||||
@@ -204,7 +216,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
|||||||
animator.setDuration(FREEFORM_ANIMATION_DURATION);
|
animator.setDuration(FREEFORM_ANIMATION_DURATION);
|
||||||
final SurfaceControl.Transaction t = mTransactionSupplier.get();
|
final SurfaceControl.Transaction t = mTransactionSupplier.get();
|
||||||
animator.addUpdateListener(animation -> {
|
animator.addUpdateListener(animation -> {
|
||||||
final float scale = animation.getAnimatedFraction();
|
final float scale = (float) animation.getAnimatedValue();
|
||||||
t.setPosition(sc, mStartPosition.x * (1 - scale), mStartPosition.y * (1 - scale))
|
t.setPosition(sc, mStartPosition.x * (1 - scale), mStartPosition.y * (1 - scale))
|
||||||
.setScale(sc, scale, scale)
|
.setScale(sc, scale, scale)
|
||||||
.show(sc)
|
.show(sc)
|
||||||
@@ -213,6 +225,9 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
|||||||
animator.addListener(new AnimatorListenerAdapter() {
|
animator.addListener(new AnimatorListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
|
if (mOnAnimationFinishedCallback != null) {
|
||||||
|
mOnAnimationFinishedCallback.accept(finishT);
|
||||||
|
}
|
||||||
mTransitions.getMainExecutor().execute(
|
mTransitions.getMainExecutor().execute(
|
||||||
() -> finishCallback.onTransitionFinished(null, null));
|
() -> finishCallback.onTransitionFinished(null, null));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import com.android.wm.shell.transition.Transitions;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
|
|||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final Transitions mTransitions;
|
private final Transitions mTransitions;
|
||||||
private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
|
private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
|
||||||
|
private Consumer<SurfaceControl.Transaction> mOnAnimationFinishedCallback;
|
||||||
private Supplier<SurfaceControl.Transaction> mTransactionSupplier;
|
private Supplier<SurfaceControl.Transaction> mTransactionSupplier;
|
||||||
|
|
||||||
public ExitDesktopTaskTransitionHandler(
|
public ExitDesktopTaskTransitionHandler(
|
||||||
@@ -76,9 +77,12 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
|
|||||||
* Starts Transition of a given type
|
* Starts Transition of a given type
|
||||||
* @param type Transition type
|
* @param type Transition type
|
||||||
* @param wct WindowContainerTransaction for transition
|
* @param wct WindowContainerTransaction for transition
|
||||||
|
* @param onAnimationEndCallback to be called after animation
|
||||||
*/
|
*/
|
||||||
public void startTransition(@WindowManager.TransitionType int type,
|
public void startTransition(@WindowManager.TransitionType int type,
|
||||||
@NonNull WindowContainerTransaction wct) {
|
@NonNull WindowContainerTransaction wct,
|
||||||
|
Consumer<SurfaceControl.Transaction> onAnimationEndCallback) {
|
||||||
|
mOnAnimationFinishedCallback = onAnimationEndCallback;
|
||||||
final IBinder token = mTransitions.startTransition(type, wct, this);
|
final IBinder token = mTransitions.startTransition(type, wct, this);
|
||||||
mPendingTransitionTokens.add(token);
|
mPendingTransitionTokens.add(token);
|
||||||
}
|
}
|
||||||
@@ -101,7 +105,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
|
|||||||
|
|
||||||
if (change.getMode() == WindowManager.TRANSIT_CHANGE) {
|
if (change.getMode() == WindowManager.TRANSIT_CHANGE) {
|
||||||
transitionHandled |= startChangeTransition(
|
transitionHandled |= startChangeTransition(
|
||||||
transition, info.getType(), change, startT, finishCallback);
|
transition, info.getType(), change, startT, finishT, finishCallback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,6 +120,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
|
|||||||
@WindowManager.TransitionType int type,
|
@WindowManager.TransitionType int type,
|
||||||
@NonNull TransitionInfo.Change change,
|
@NonNull TransitionInfo.Change change,
|
||||||
@NonNull SurfaceControl.Transaction startT,
|
@NonNull SurfaceControl.Transaction startT,
|
||||||
|
@NonNull SurfaceControl.Transaction finishT,
|
||||||
@NonNull Transitions.TransitionFinishCallback finishCallback) {
|
@NonNull Transitions.TransitionFinishCallback finishCallback) {
|
||||||
if (!mPendingTransitionTokens.contains(transition)) {
|
if (!mPendingTransitionTokens.contains(transition)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -156,6 +161,9 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
|
|||||||
animator.addListener(new AnimatorListenerAdapter() {
|
animator.addListener(new AnimatorListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
|
if (mOnAnimationFinishedCallback != null) {
|
||||||
|
mOnAnimationFinishedCallback.accept(finishT);
|
||||||
|
}
|
||||||
mTransitions.getMainExecutor().execute(
|
mTransitions.getMainExecutor().execute(
|
||||||
() -> finishCallback.onTransitionFinished(null, null));
|
() -> finishCallback.onTransitionFinished(null, null));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,7 +111,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
|
|||||||
private ValueAnimator mDragToDesktopValueAnimator;
|
private ValueAnimator mDragToDesktopValueAnimator;
|
||||||
private final Rect mDragToDesktopAnimationStartBounds = new Rect();
|
private final Rect mDragToDesktopAnimationStartBounds = new Rect();
|
||||||
private boolean mDragToDesktopAnimationStarted;
|
private boolean mDragToDesktopAnimationStarted;
|
||||||
private float mCaptionDragStartX;
|
|
||||||
|
|
||||||
public DesktopModeWindowDecorViewModel(
|
public DesktopModeWindowDecorViewModel(
|
||||||
Context context,
|
Context context,
|
||||||
@@ -525,7 +524,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
|
|||||||
DesktopModeWindowDecoration relevantDecor) {
|
DesktopModeWindowDecoration relevantDecor) {
|
||||||
switch (ev.getActionMasked()) {
|
switch (ev.getActionMasked()) {
|
||||||
case MotionEvent.ACTION_DOWN: {
|
case MotionEvent.ACTION_DOWN: {
|
||||||
mCaptionDragStartX = ev.getX();
|
|
||||||
// Begin drag through status bar if applicable.
|
// Begin drag through status bar if applicable.
|
||||||
if (relevantDecor != null) {
|
if (relevantDecor != null) {
|
||||||
mDragToDesktopAnimationStartBounds.set(
|
mDragToDesktopAnimationStartBounds.set(
|
||||||
@@ -580,8 +578,9 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
|
|||||||
}
|
}
|
||||||
if (mTransitionDragActive) {
|
if (mTransitionDragActive) {
|
||||||
mDesktopTasksController.ifPresent(
|
mDesktopTasksController.ifPresent(
|
||||||
c -> c.onDragPositioningMoveThroughStatusBar(relevantDecor.mTaskInfo,
|
c -> c.onDragPositioningMoveThroughStatusBar(
|
||||||
relevantDecor.mTaskSurface, ev.getY()));
|
relevantDecor.mTaskInfo,
|
||||||
|
relevantDecor.mTaskSurface, ev.getY()));
|
||||||
final int statusBarHeight = getStatusBarHeight(
|
final int statusBarHeight = getStatusBarHeight(
|
||||||
relevantDecor.mTaskInfo.displayId);
|
relevantDecor.mTaskInfo.displayId);
|
||||||
if (ev.getY() > statusBarHeight) {
|
if (ev.getY() > statusBarHeight) {
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ public class EnterDesktopTaskTransitionHandlerTest {
|
|||||||
WindowContainerTransaction wct = new WindowContainerTransaction();
|
WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||||
doReturn(mToken).when(mTransitions)
|
doReturn(mToken).when(mTransitions)
|
||||||
.startTransition(transitionType, wct, mEnterDesktopTaskTransitionHandler);
|
.startTransition(transitionType, wct, mEnterDesktopTaskTransitionHandler);
|
||||||
mEnterDesktopTaskTransitionHandler.startTransition(transitionType, wct);
|
mEnterDesktopTaskTransitionHandler.startTransition(transitionType, wct, null);
|
||||||
|
|
||||||
TransitionInfo.Change change =
|
TransitionInfo.Change change =
|
||||||
createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FREEFORM);
|
createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FREEFORM);
|
||||||
@@ -115,7 +115,7 @@ public class EnterDesktopTaskTransitionHandlerTest {
|
|||||||
WindowContainerTransaction wct = new WindowContainerTransaction();
|
WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||||
doReturn(mToken).when(mTransitions)
|
doReturn(mToken).when(mTransitions)
|
||||||
.startTransition(transitionType, wct, mEnterDesktopTaskTransitionHandler);
|
.startTransition(transitionType, wct, mEnterDesktopTaskTransitionHandler);
|
||||||
mEnterDesktopTaskTransitionHandler.startTransition(transitionType, wct);
|
mEnterDesktopTaskTransitionHandler.startTransition(transitionType, wct, null);
|
||||||
|
|
||||||
TransitionInfo.Change change =
|
TransitionInfo.Change change =
|
||||||
createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FREEFORM);
|
createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FREEFORM);
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public class ExitDesktopTaskTransitionHandlerTest extends ShellTestCase {
|
|||||||
doReturn(mToken).when(mTransitions)
|
doReturn(mToken).when(mTransitions)
|
||||||
.startTransition(transitionType, wct, mExitDesktopTaskTransitionHandler);
|
.startTransition(transitionType, wct, mExitDesktopTaskTransitionHandler);
|
||||||
|
|
||||||
mExitDesktopTaskTransitionHandler.startTransition(transitionType, wct);
|
mExitDesktopTaskTransitionHandler.startTransition(transitionType, wct, null);
|
||||||
|
|
||||||
TransitionInfo.Change change =
|
TransitionInfo.Change change =
|
||||||
createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FULLSCREEN);
|
createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FULLSCREEN);
|
||||||
|
|||||||
Reference in New Issue
Block a user