Merge "Fix RTL menu position for icon app chip." into main
diff --git a/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml b/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml
index 863319f..55fe2b8 100644
--- a/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml
+++ b/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml
@@ -215,7 +215,6 @@
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:clickable="true"
- android:focusableInTouchMode="true"
android:accessibilityTraversalAfter="@id/gesture_tutorial_fragment_feedback_subtitle"
android:contentDescription="@string/gesture_tutorial_action_button_label"
android:background="@drawable/gesture_tutorial_action_button_background"
diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java
index 8555376..cc94824 100644
--- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java
@@ -165,7 +165,7 @@
processLoadedTasks(tasks, taskIdsToExclude);
mQuickSwitchViewController.updateQuickSwitchView(
mTasks,
- mNumHiddenTasks,
+ wasOpenedFromTaskbar ? 0 : mNumHiddenTasks,
currentFocusIndexOverride,
mHasDesktopTask,
mWasDesktopTaskFilteredOut);
@@ -205,7 +205,7 @@
// running. If not, focus that first task.
mQuickSwitchViewController.openQuickSwitchView(
mTasks,
- mNumHiddenTasks,
+ wasOpenedFromTaskbar ? 0 : mNumHiddenTasks,
/* updateTasks= */ false,
currentFocusedIndex == -1 && !mControllerCallbacks.isFirstTaskRunning()
? 0 : currentFocusedIndex,
@@ -223,7 +223,7 @@
// the correct index.
mQuickSwitchViewController.openQuickSwitchView(
mTasks,
- mNumHiddenTasks,
+ wasOpenedFromTaskbar ? 0 : mNumHiddenTasks,
/* updateTasks= */ true,
currentFocusedIndex == -1 && !mControllerCallbacks.isFirstTaskRunning()
? 0 : currentFocusedIndex,
diff --git a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.kt b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.kt
index 79328df..23dc81d 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.kt
+++ b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.kt
@@ -76,10 +76,7 @@
if (state.displayOverviewTasksAsGrid(launcher.deviceProfile)) 1f else 0f,
)
if (enableDesktopExplodedView()) {
- DESK_EXPLODE_PROGRESS.set(
- recentsView,
- if (state.displayOverviewTasksAsGrid(launcher.deviceProfile)) 1f else 0f,
- )
+ DESK_EXPLODE_PROGRESS.set(recentsView, if (state.showExplodedDesktopView()) 1f else 0f)
}
TASK_THUMBNAIL_SPLASH_ALPHA.set(
@@ -168,7 +165,7 @@
builder.setFloat(
recentsView,
DESK_EXPLODE_PROGRESS,
- if (toState.isRecentsViewVisible) 1f else 0f,
+ if (toState.showExplodedDesktopView()) 1f else 0f,
getOverviewInterpolator(fromState, toState),
)
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
index b1196af..a5b1ee7 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
@@ -97,6 +97,11 @@
}
@Override
+ public boolean showExplodedDesktopView() {
+ return false;
+ }
+
+ @Override
protected float getDepthUnchecked(Context context) {
if (Launcher.getLauncher(context).areDesktopTasksVisible()) {
// Don't blur the background while desktop tasks are visible
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
index 5fdedcc..963504f 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
@@ -16,6 +16,7 @@
package com.android.launcher3.uioverrides.states;
import static com.android.app.animation.Interpolators.DECELERATE_2;
+import static com.android.launcher3.Flags.enableDesktopExplodedView;
import static com.android.launcher3.Flags.enableScalingRevealHomeAnimation;
import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_OVERVIEW;
@@ -171,6 +172,11 @@
}
@Override
+ public boolean showExplodedDesktopView() {
+ return enableDesktopExplodedView();
+ }
+
+ @Override
public boolean disallowTaskbarGlobalDrag() {
// Disable global drag in overview
return true;
diff --git a/quickstep/src/com/android/quickstep/TaskViewUtils.java b/quickstep/src/com/android/quickstep/TaskViewUtils.java
index 37c2d1c..855ff98 100644
--- a/quickstep/src/com/android/quickstep/TaskViewUtils.java
+++ b/quickstep/src/com/android/quickstep/TaskViewUtils.java
@@ -22,6 +22,7 @@
import static com.android.app.animation.Interpolators.LINEAR;
import static com.android.app.animation.Interpolators.TOUCH_RESPONSE;
import static com.android.app.animation.Interpolators.clampToProgress;
+import static com.android.launcher3.Flags.enableDesktopExplodedView;
import static com.android.launcher3.Flags.enableGridOnlyOverview;
import static com.android.launcher3.LauncherAnimUtils.VIEW_ALPHA;
import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
@@ -201,6 +202,9 @@
recentsView.getSizeStrategy(), targets, forDesktop);
if (forDesktop) {
remoteTargetHandles = gluer.assignTargetsForDesktop(targets, transitionInfo);
+ if (enableDesktopExplodedView()) {
+ ((DesktopTaskView) taskView).setRemoteTargetHandles(remoteTargetHandles);
+ }
} else if (taskView.containsMultipleTasks()) {
remoteTargetHandles = gluer.assignTargetsForSplitScreen(targets,
((GroupedTaskView) taskView).getSplitBoundsConfig());
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
index 2631efe..554cea2 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
@@ -132,7 +132,8 @@
getOverviewInterpolator(state));
}
if (enableDesktopExplodedView()) {
- setter.setFloat(mRecentsView, DESK_EXPLODE_PROGRESS, showAsGrid ? 1f : 0f,
+ setter.setFloat(mRecentsView, DESK_EXPLODE_PROGRESS,
+ state.showExplodedDesktopView() ? 1f : 0f,
getOverviewInterpolator(state));
}
diff --git a/quickstep/src/com/android/quickstep/fallback/RecentsState.java b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
index f722c5d..2c1a4eb 100644
--- a/quickstep/src/com/android/quickstep/fallback/RecentsState.java
+++ b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
@@ -15,6 +15,7 @@
*/
package com.android.quickstep.fallback;
+import static com.android.launcher3.Flags.enableDesktopExplodedView;
import static com.android.launcher3.Flags.enableDesktopWindowingCarouselDetach;
import static com.android.launcher3.LauncherState.FLAG_CLOSE_POPUPS;
import static com.android.launcher3.uioverrides.states.BackgroundAppState.getOverviewScaleAndOffsetForBackgroundState;
@@ -46,16 +47,18 @@
private static final int FLAG_TASK_THUMBNAIL_SPLASH = BaseState.getFlag(8);
private static final int FLAG_DETACH_DESKTOP_CAROUSEL = BaseState.getFlag(9);
private static final int FLAG_ADD_DESK_BUTTON = BaseState.getFlag(10);
+ private static final int FLAG_SHOW_EXPLODED_DESKTOP_VIEW = BaseState.getFlag(11);
private static final RecentsState[] sAllStates = new RecentsState[6];
public static final RecentsState DEFAULT = new RecentsState(0,
FLAG_DISABLE_RESTORE | FLAG_CLEAR_ALL_BUTTON | FLAG_OVERVIEW_ACTIONS | FLAG_SHOW_AS_GRID
| FLAG_SCRIM | FLAG_LIVE_TILE | FLAG_RECENTS_VIEW_VISIBLE
- | FLAG_ADD_DESK_BUTTON);
+ | FLAG_ADD_DESK_BUTTON | FLAG_SHOW_EXPLODED_DESKTOP_VIEW);
public static final RecentsState MODAL_TASK = new ModalState(1,
FLAG_DISABLE_RESTORE | FLAG_OVERVIEW_ACTIONS | FLAG_MODAL
- | FLAG_SHOW_AS_GRID | FLAG_SCRIM | FLAG_LIVE_TILE | FLAG_RECENTS_VIEW_VISIBLE);
+ | FLAG_SHOW_AS_GRID | FLAG_SCRIM | FLAG_LIVE_TILE | FLAG_RECENTS_VIEW_VISIBLE
+ | FLAG_SHOW_EXPLODED_DESKTOP_VIEW);
public static final RecentsState BACKGROUND_APP = new BackgroundAppState(2,
FLAG_DISABLE_RESTORE | FLAG_NON_INTERACTIVE | FLAG_FULL_SCREEN
| FLAG_RECENTS_VIEW_VISIBLE | FLAG_TASK_THUMBNAIL_SPLASH
@@ -64,7 +67,7 @@
public static final RecentsState BG_LAUNCHER = new LauncherState(4, 0);
public static final RecentsState OVERVIEW_SPLIT_SELECT = new RecentsState(5,
FLAG_SHOW_AS_GRID | FLAG_SCRIM | FLAG_RECENTS_VIEW_VISIBLE | FLAG_CLOSE_POPUPS
- | FLAG_DISABLE_RESTORE);
+ | FLAG_DISABLE_RESTORE | FLAG_SHOW_EXPLODED_DESKTOP_VIEW);
/** Returns the corresponding RecentsState from ordinal provided */
public static RecentsState stateFromOrdinal(int ordinal) {
@@ -174,6 +177,11 @@
return hasFlag(FLAG_DETACH_DESKTOP_CAROUSEL) && enableDesktopWindowingCarouselDetach();
}
+ @Override
+ public boolean showExplodedDesktopView() {
+ return hasFlag(FLAG_SHOW_EXPLODED_DESKTOP_VIEW) && enableDesktopExplodedView();
+ }
+
/**
* True if the state has overview panel visible.
*/
diff --git a/quickstep/src/com/android/quickstep/orientation/PortraitPagedViewHandler.kt b/quickstep/src/com/android/quickstep/orientation/PortraitPagedViewHandler.kt
index 1bbe005..15eb69e 100644
--- a/quickstep/src/com/android/quickstep/orientation/PortraitPagedViewHandler.kt
+++ b/quickstep/src/com/android/quickstep/orientation/PortraitPagedViewHandler.kt
@@ -726,7 +726,11 @@
val secondarySnapshotWidth = groupedTaskViewWidth - primarySnapshotWidth
primaryAppChipView.setSplitTranslationX(-secondarySnapshotWidth.toFloat())
} else {
- secondaryAppChipView.setSplitTranslationX(primarySnapshotWidth.toFloat())
+ val dividerSize =
+ Math.round(groupedTaskViewWidth * splitConfig.dividerPercent)
+ secondaryAppChipView.setSplitTranslationX(
+ primarySnapshotWidth.toFloat() + dividerSize
+ )
}
} else {
primaryAppChipView.setSplitTranslationX(0f)
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 3b94380..d350c77 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -2925,12 +2925,15 @@
updateGridProperties();
}
+ BaseState<?> endState = mSizeStrategy.stateFromGestureEndTarget(endTarget);
+ // Starting the desk exploded animation when the gesture from an app is released.
if (enableDesktopExplodedView()) {
if (animatorSet == null) {
- mUtils.setDeskExplodeProgress(1);
+ mUtils.setDeskExplodeProgress(endState.showExplodedDesktopView() ? 1f : 0f);
} else {
animatorSet.play(
- ObjectAnimator.ofFloat(this, DESK_EXPLODE_PROGRESS, 1));
+ ObjectAnimator.ofFloat(this, DESK_EXPLODE_PROGRESS,
+ endState.showExplodedDesktopView() ? 1f : 0f));
}
for (TaskView taskView : getTaskViews()) {
@@ -2940,7 +2943,6 @@
}
}
- BaseState<?> endState = mSizeStrategy.stateFromGestureEndTarget(endTarget);
if (endState.displayOverviewTasksAsGrid(mContainer.getDeviceProfile())) {
TaskView runningTaskView = getRunningTaskView();
float runningTaskGridTranslationX = 0;
@@ -3014,9 +3016,11 @@
animateActionsViewIn();
if (mEnableDrawingLiveTile) {
- for (TaskView taskView : getTaskViews()) {
- if (taskView instanceof DesktopTaskView desktopTaskView) {
- desktopTaskView.setRemoteTargetHandles(mRemoteTargetHandles);
+ if (enableDesktopExplodedView()) {
+ for (TaskView taskView : getTaskViews()) {
+ if (taskView instanceof DesktopTaskView desktopTaskView) {
+ desktopTaskView.setRemoteTargetHandles(mRemoteTargetHandles);
+ }
}
}
TaskView runningTaskView = getRunningTaskView();
@@ -5780,6 +5784,9 @@
if (taskView instanceof DesktopTaskView) {
anim.play(ObjectAnimator.ofArgb(mContainer.getScrimView(), VIEW_BACKGROUND_COLOR,
Color.TRANSPARENT));
+ if (enableDesktopExplodedView()) {
+ anim.play(ObjectAnimator.ofFloat(this, DESK_EXPLODE_PROGRESS, 1f, 0f));
+ }
}
DepthController depthController = getDepthController();
if (depthController != null) {
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java b/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java
index 08ce5e7..ec245ee 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java
@@ -24,7 +24,6 @@
import androidx.test.filters.LargeTest;
import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
-import com.android.launcher3.util.rule.ScreenRecordRule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -124,7 +123,6 @@
}
@Test
- @ScreenRecordRule.ScreenRecord // b/373417111
public void testLaunchShortcut_fromTaskbarAllApps() {
getTaskbar().openAllApps()
.getAppIcon(TEST_APP_NAME)
diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java
index 2f1af68..74d5098 100644
--- a/src/com/android/launcher3/logging/StatsLogManager.java
+++ b/src/com/android/launcher3/logging/StatsLogManager.java
@@ -433,20 +433,29 @@
@UiEvent(doc = "Notification dismissed by swiping right.")
LAUNCHER_NOTIFICATION_DISMISSED(652),
- @UiEvent(doc = "Current grid size is changed to 6.")
- LAUNCHER_GRID_SIZE_6(930),
+ @UiEvent(doc = "Current grid size is changed to 2x2")
+ LAUNCHER_GRID_SIZE_2_BY_2(2181),
- @UiEvent(doc = "Current grid size is changed to 5.")
- LAUNCHER_GRID_SIZE_5(662),
+ @UiEvent(doc = "Current grid size is changed to 3x3")
+ LAUNCHER_GRID_SIZE_3_BY_3(2182),
- @UiEvent(doc = "Current grid size is changed to 4.")
- LAUNCHER_GRID_SIZE_4(663),
+ @UiEvent(doc = "Current grid size is changed to 4x4")
+ LAUNCHER_GRID_SIZE_4_BY_4(2183),
- @UiEvent(doc = "Current grid size is changed to 3.")
- LAUNCHER_GRID_SIZE_3(664),
+ @UiEvent(doc = "Current grid size is changed to 4x5")
+ LAUNCHER_GRID_SIZE_4_BY_5(2184),
- @UiEvent(doc = "Current grid size is changed to 2.")
- LAUNCHER_GRID_SIZE_2(665),
+ @UiEvent(doc = "Current grid size is changed to 4x6")
+ LAUNCHER_GRID_SIZE_4_BY_6(2185),
+
+ @UiEvent(doc = "Current grid size is changed to 5x5")
+ LAUNCHER_GRID_SIZE_5_BY_5(2186),
+
+ @UiEvent(doc = "Current grid size is changed to 5x6")
+ LAUNCHER_GRID_SIZE_5_BY_6(2187),
+
+ @UiEvent(doc = "Current grid size is changed to 6x5")
+ LAUNCHER_GRID_SIZE_6_BY_5(2188),
@UiEvent(doc = "Launcher entered into AllApps state.")
LAUNCHER_ALLAPPS_ENTRY(692),
diff --git a/src/com/android/launcher3/model/DeviceGridState.java b/src/com/android/launcher3/model/DeviceGridState.java
index d06f541..96ce4c8 100644
--- a/src/com/android/launcher3/model/DeviceGridState.java
+++ b/src/com/android/launcher3/model/DeviceGridState.java
@@ -21,11 +21,6 @@
import static com.android.launcher3.LauncherPrefs.DEVICE_TYPE;
import static com.android.launcher3.LauncherPrefs.HOTSEAT_COUNT;
import static com.android.launcher3.LauncherPrefs.WORKSPACE_SIZE;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_2;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_3;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_4;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_5;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_6;
import android.content.Context;
import android.text.TextUtils;
@@ -114,17 +109,23 @@
*/
public LauncherEvent getWorkspaceSizeEvent() {
if (!TextUtils.isEmpty(mGridSizeString)) {
- switch (getColumns()) {
- case 6:
- return LAUNCHER_GRID_SIZE_6;
- case 5:
- return LAUNCHER_GRID_SIZE_5;
- case 4:
- return LAUNCHER_GRID_SIZE_4;
- case 3:
- return LAUNCHER_GRID_SIZE_3;
- case 2:
- return LAUNCHER_GRID_SIZE_2;
+ switch (mGridSizeString) {
+ case "2,2":
+ return LauncherEvent.LAUNCHER_GRID_SIZE_2_BY_2;
+ case "3,3":
+ return LauncherEvent.LAUNCHER_GRID_SIZE_3_BY_3;
+ case "4,4":
+ return LauncherEvent.LAUNCHER_GRID_SIZE_4_BY_4;
+ case "4,5":
+ return LauncherEvent.LAUNCHER_GRID_SIZE_4_BY_5;
+ case "4,6":
+ return LauncherEvent.LAUNCHER_GRID_SIZE_4_BY_6;
+ case "5,5":
+ return LauncherEvent.LAUNCHER_GRID_SIZE_5_BY_5;
+ case "5,6":
+ return LauncherEvent.LAUNCHER_GRID_SIZE_5_BY_6;
+ case "6,5":
+ return LauncherEvent.LAUNCHER_GRID_SIZE_6_BY_5;
}
}
return null;
diff --git a/src/com/android/launcher3/statemanager/BaseState.java b/src/com/android/launcher3/statemanager/BaseState.java
index b7dd2bf..ea54159 100644
--- a/src/com/android/launcher3/statemanager/BaseState.java
+++ b/src/com/android/launcher3/statemanager/BaseState.java
@@ -69,6 +69,13 @@
}
/**
+ * For this state, whether we should show desktop exploded view in Overview.
+ */
+ default boolean showExplodedDesktopView() {
+ return false;
+ }
+
+ /**
* For this state, whether fullscreen and desktop quickswitch carousel are detached.
*/
default boolean detachDesktopCarousel() {