diff --git a/quickstep/src/com/android/launcher3/desktop/DesktopRecentsTransitionController.kt b/quickstep/src/com/android/launcher3/desktop/DesktopRecentsTransitionController.kt index 8b064d347f..010a5c8d77 100644 --- a/quickstep/src/com/android/launcher3/desktop/DesktopRecentsTransitionController.kt +++ b/quickstep/src/com/android/launcher3/desktop/DesktopRecentsTransitionController.kt @@ -64,11 +64,16 @@ class DesktopRecentsTransitionController( } /** Launch desktop tasks from recents view */ - fun moveToDesktop(taskContainer: TaskContainer, transitionSource: DesktopModeTransitionSource) { + fun moveToDesktop( + taskContainer: TaskContainer, + transitionSource: DesktopModeTransitionSource, + successCallback: Runnable, + ) { systemUiProxy.moveToDesktop( taskContainer.task.key.id, transitionSource, /* transition = */ null, + successCallback, ) } diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.kt b/quickstep/src/com/android/quickstep/SystemUiProxy.kt index 495215a4b9..94ef4dddcc 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.kt +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.kt @@ -81,6 +81,7 @@ import com.android.wm.shell.common.pip.IPip import com.android.wm.shell.common.pip.IPipAnimationListener import com.android.wm.shell.desktopmode.IDesktopMode import com.android.wm.shell.desktopmode.IDesktopTaskListener +import com.android.wm.shell.desktopmode.IMoveToDesktopCallback import com.android.wm.shell.draganddrop.IDragAndDrop import com.android.wm.shell.onehanded.IOneHanded import com.android.wm.shell.recents.IRecentTasks @@ -1115,9 +1116,19 @@ class SystemUiProxy @Inject constructor(@ApplicationContext private val context: taskId: Int, transitionSource: DesktopModeTransitionSource?, transition: RemoteTransition?, + successCallback: Runnable, ) = executeWithErrorLog({ "Failed call moveToDesktop" }) { - desktopMode?.moveToDesktop(taskId, transitionSource, transition) + desktopMode?.moveToDesktop( + taskId, + transitionSource, + transition, + object : IMoveToDesktopCallback.Stub() { + override fun onTaskMovedToDesktop() { + successCallback.run() + } + }, + ) } /** Call shell to remove the desktop that is on given `displayId` */ diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index b5d9936fba..684e84a480 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -6839,10 +6839,8 @@ public abstract class RecentsView< return; } - mDesktopRecentsTransitionController.moveToDesktop(taskContainer, transitionSource); - // TODO(b/387471509): Invoke successCallback after actual transition completion of - // overview menu to desktop - successCallback.run(); + mDesktopRecentsTransitionController.moveToDesktop(taskContainer, transitionSource, + successCallback); } /**