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

Commit 5ef619fc authored by Muyuan Li's avatar Muyuan Li
Browse files

sysui: changed split screen shortcut key behavior.

Instead of cycling between 1/4, 1/2, 3/4 with
consecutive Meta + [ / Meta + ] keys, it dismisses
the activity completely when it goes below 1/4 or 3/4.

Bug: 30075277
Change-Id: I326f4d163537ae96f1845714a8bd56b2b0d58984
(cherry picked from commit b29eeada668b298f9c0e41bd4d4b9fe1f690247e)
parent d172ebb6
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import android.content.Context;
import android.content.pm.ServiceInfo;
import android.content.res.Configuration;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.ArraySet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.IWindowManager;
@@ -39,6 +41,7 @@ import com.android.settingslib.accessibility.AccessibilityUtils;
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.recents.Recents;
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.stackdivider.Divider;
import com.android.systemui.stackdivider.DividerView;
import com.android.systemui.statusbar.phone.NavigationBarGestureHelper;
@@ -102,8 +105,16 @@ public class ShortcutKeyDispatcher extends SystemUI
                int dockMode = (shortcutCode == SC_DOCK_LEFT)
                        ? ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT
                        : ActivityManager.DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT;
                recents.dockTopTask(NavigationBarGestureHelper.DRAG_MODE_NONE, dockMode, null,
                        MetricsEvent.WINDOW_DOCK_SHORTCUTS);
                List<ActivityManager.RecentTaskInfo> taskList =
                        SystemServicesProxy.getInstance(mContext).getRecentTasks(1,
                                UserHandle.USER_CURRENT, false, new ArraySet<>());
                recents.showRecents(
                        false /* triggeredFromAltTab */,
                        false /* fromHome */);
                if (!taskList.isEmpty()) {
                    SystemServicesProxy.getInstance(mContext).startTaskInDockedMode(
                            taskList.get(0).id, dockMode);
                }
            } else {
                // If there is already a docked window, we respond by resizing the docking pane.
                DividerView dividerView = getComponent(Divider.class).getView();
@@ -111,11 +122,11 @@ public class ShortcutKeyDispatcher extends SystemUI
                int dividerPosition = dividerView.getCurrentPosition();
                DividerSnapAlgorithm.SnapTarget currentTarget =
                        snapAlgorithm.calculateNonDismissingSnapTarget(dividerPosition);
                int increment = (shortcutCode == SC_DOCK_LEFT) ? -1 : 1;
                DividerSnapAlgorithm.SnapTarget target = snapAlgorithm.cycleNonDismissTarget(
                        currentTarget, increment);
                DividerSnapAlgorithm.SnapTarget target = (shortcutCode == SC_DOCK_LEFT)
                        ? snapAlgorithm.getPreviousTarget(currentTarget)
                        : snapAlgorithm.getNextTarget(currentTarget);
                dividerView.startDragging(true /* animate */, false /* touching */);
                dividerView.stopDragging(target.position, 0f, true /* avoidDismissStart */,
                dividerView.stopDragging(target.position, 0f, false /* avoidDismissStart */,
                        true /* logMetrics */);
            }
        } catch (RemoteException e) {