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

Commit 8129ebfd authored by Schneider Victor-tulias's avatar Schneider Victor-tulias Committed by Android (Google) Code Review
Browse files

Merge "Keyboard quick switch polish" into tm-qpr-dev

parents 6bb01ee8 0bba3d61
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -425,7 +425,7 @@ public class KeyboardQuickSwitchView extends ConstraintLayout {

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        return (mViewCallbacks != null && mViewCallbacks.onKeyUp(keyCode, event))
        return (mViewCallbacks != null && mViewCallbacks.onKeyUp(keyCode, event, mIsRtl))
                || super.onKeyUp(keyCode, event);
    }

+27 −7
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;

import android.animation.Animator;
import android.view.KeyEvent;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -125,18 +126,26 @@ public class KeyboardQuickSwitchViewController {
    }

    private int launchTaskAt(int index) {
        KeyboardQuickSwitchTaskView taskView = mKeyboardQuickSwitchView.getTaskAt(index);
        if (mCloseAnimation != null) {
            // Ignore taps on task views and alt key unpresses while the close animation is running.
            return -1;
        }
        // Even with a valid index, this can be null if the user tries to quick switch before the
        // views have been added in the KeyboardQuickSwitchView.
        View taskView = mKeyboardQuickSwitchView.getTaskAt(index);
        GroupTask task = mControllerCallbacks.getTaskAt(index);
        if (taskView == null || task == null) {
        if (task == null) {
            return Math.max(0, index);
        } else if (task.task2 == null) {
            UI_HELPER_EXECUTOR.execute(() ->
                    ActivityManagerWrapper.getInstance().startActivityFromRecents(
                            task.task1.key,
                            mControllers.taskbarActivityContext.getActivityLaunchOptions(
                                    taskView, null).options));
                                    taskView == null ? mKeyboardQuickSwitchView : taskView, null)
                                    .options));
        } else {
            mControllers.uiController.launchSplitTasks(taskView, task);
            mControllers.uiController.launchSplitTasks(
                    taskView == null ? mKeyboardQuickSwitchView : taskView, task);
        }
        return -1;
    }
@@ -160,15 +169,26 @@ public class KeyboardQuickSwitchViewController {

    class ViewCallbacks {

        boolean onKeyUp(int keyCode, KeyEvent event) {
            if (keyCode != KeyEvent.KEYCODE_TAB) {
        boolean onKeyUp(int keyCode, KeyEvent event, boolean isRTL) {
            if (keyCode != KeyEvent.KEYCODE_TAB
                    && keyCode != KeyEvent.KEYCODE_DPAD_RIGHT
                    && keyCode != KeyEvent.KEYCODE_DPAD_LEFT
                    && keyCode != KeyEvent.KEYCODE_GRAVE
                    && keyCode != KeyEvent.KEYCODE_ESCAPE) {
                return false;
            }
            if (keyCode == KeyEvent.KEYCODE_GRAVE || keyCode == KeyEvent.KEYCODE_ESCAPE) {
                closeQuickSwitchView(true);
                return true;
            }
            boolean traverseBackwards = (keyCode == KeyEvent.KEYCODE_TAB && event.isShiftPressed())
                    || (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT && !isRTL)
                    || (keyCode == KeyEvent.KEYCODE_DPAD_LEFT && isRTL);
            int taskCount = mControllerCallbacks.getTaskCount();
            int toIndex = mCurrentFocusIndex == -1
                    // Focus the second-most recent app if possible
                    ? (taskCount > 1 ? 1 : 0)
                    : (event.isShiftPressed()
                    : (traverseBackwards
                            // focus a more recent task or loop back to the opposite end
                            ? Math.max(0, mCurrentFocusIndex == 0
                                    ? taskCount - 1 : mCurrentFocusIndex - 1)
+1 −2
Original line number Diff line number Diff line
@@ -388,8 +388,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
    }

    @Override
    public void launchSplitTasks(View taskView, GroupTask groupTask) {
        super.launchSplitTasks(taskView, groupTask);
    public void launchSplitTasks(@NonNull View taskView, @NonNull GroupTask groupTask) {
        mLauncher.launchSplitTasks(taskView, groupTask);
    }

+2 −10
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.view.MotionEvent;
import android.view.View;

import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.launcher3.model.data.ItemInfo;
@@ -252,15 +253,6 @@ public class TaskbarUIController {
        mControllers.keyboardQuickSwitchController.openQuickSwitchView();
    }

    /**
     * Closes the Keyboard Quick Switch View.
     *
     * No-op if the view is already closed
     */
    public void closeQuickSwitchView() {
        mControllers.keyboardQuickSwitchController.closeQuickSwitchView();
    }

    /**
     * Launches the focused task and closes the Keyboard Quick Switch View.
     *
@@ -280,5 +272,5 @@ public class TaskbarUIController {
     *
     * No-op if the view is not yet open.
     */
    public void launchSplitTasks(View taskview, GroupTask groupTask) { }
    public void launchSplitTasks(@NonNull View taskview, @NonNull GroupTask groupTask) { }
}
+1 −1
Original line number Diff line number Diff line
@@ -1214,7 +1214,7 @@ public class QuickstepLauncher extends Launcher {
     *
     * If the second split task is missing, launches the first task normally.
     */
    public void launchSplitTasks(View taskView, GroupTask groupTask) {
    public void launchSplitTasks(@NonNull View taskView, @NonNull GroupTask groupTask) {
        if (groupTask.task2 == null) {
            UI_HELPER_EXECUTOR.execute(() ->
                    ActivityManagerWrapper.getInstance().startActivityFromRecents(