Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a38c6d8c authored by Matt Sziklay's avatar Matt Sziklay Committed by Android (Google) Code Review
Browse files

Merge "Bring task to front when interacting with header." into udc-dev

parents 8f1476e7 41299be4
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -311,6 +311,20 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
        }
    }

    /**
     * Moves a specifc task to the front.
     * @param taskInfo the task to show in front.
     */
    public void moveTaskToFront(RunningTaskInfo taskInfo) {
        WindowContainerTransaction wct = new WindowContainerTransaction();
        wct.reorder(taskInfo.token, true /* onTop */);
        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
            mTransitions.startTransition(TRANSIT_TO_FRONT, wct, null);
        } else {
            mShellTaskOrganizer.applyTransaction(wct);
        }
    }

    /**
     * Turn desktop mode on or off
     * @param active the desired state for desktop mode setting
+11 −0
Original line number Diff line number Diff line
@@ -191,6 +191,17 @@ class DesktopTasksController(
        }
    }

    /** Move a task to the front **/
    fun moveTaskToFront(taskInfo: ActivityManager.RunningTaskInfo) {
        val wct = WindowContainerTransaction()
        wct.reorder(taskInfo.token, true)
        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
            transitions.startTransition(TRANSIT_TO_FRONT, wct, null /* handler */)
        } else {
            shellTaskOrganizer.applyTransaction(wct)
        }
    }

    /**
     * Get windowing move for a given `taskId`
     *
+9 −0
Original line number Diff line number Diff line
@@ -307,6 +307,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
            } else if (id == R.id.back_button) {
                mTaskOperations.injectBackKey();
            } else if (id == R.id.caption_handle || id == R.id.open_menu_button) {
                moveTaskToFront(mTaskOrganizer.getRunningTaskInfo(mTaskId));
                decoration.createHandleMenu();
            } else if (id == R.id.desktop_button) {
                mDesktopModeController.ifPresent(c -> c.setDesktopModeActive(true));
@@ -327,9 +328,17 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
            if (id != R.id.caption_handle && id != R.id.desktop_mode_caption) {
                return false;
            }
            moveTaskToFront(mTaskOrganizer.getRunningTaskInfo(mTaskId));
            return mDragDetector.onMotionEvent(e);
        }

        private void moveTaskToFront(RunningTaskInfo taskInfo) {
            if (!taskInfo.isFocused) {
                mDesktopTasksController.ifPresent(c -> c.moveTaskToFront(taskInfo));
                mDesktopModeController.ifPresent(c -> c.moveTaskToFront(taskInfo));
            }
        }

        /**
         * @param e {@link MotionEvent} to process
         * @return {@code true} if the motion event is handled.