Loading quickstep/src/com/android/quickstep/views/LauncherRecentsView.java +3 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.CLEAR_ALL_BUTTON; import static com.android.launcher3.LauncherState.EDIT_MODE; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.LauncherState.OVERVIEW; import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK; Loading Loading @@ -133,7 +134,8 @@ public class LauncherRecentsView extends RecentsView<QuickstepLauncher, Launcher @Override public void onStateTransitionComplete(LauncherState finalState) { if (finalState == NORMAL || finalState == SPRING_LOADED || finalState == ALL_APPS) { if (finalState == NORMAL || finalState == SPRING_LOADED || finalState == EDIT_MODE || finalState == ALL_APPS) { // Clean-up logic that occurs when recents is no longer in use/visible. reset(); } Loading src/com/android/launcher3/CellLayout.java +4 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.launcher3; import static android.animation.ValueAnimator.areAnimatorsEnabled; import static com.android.launcher3.LauncherState.EDIT_MODE; import static com.android.launcher3.anim.Interpolators.DEACCEL_1_5; import static com.android.launcher3.dragndrop.DraggableView.DRAGGABLE_ICON; import static com.android.launcher3.icons.IconNormalizer.ICON_VISIBLE_AREA_FACTOR; Loading Loading @@ -571,8 +572,10 @@ public class CellLayout extends ViewGroup { } protected void updateBgAlpha() { if (!getWorkspace().mLauncher.isInState(EDIT_MODE)) { mBackground.setAlpha((int) (mSpringLoadedProgress * 255)); } } /** * Set the progress of this page's scroll Loading src/com/android/launcher3/Launcher.java +13 −19 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import static com.android.launcher3.LauncherAnimUtils.WORKSPACE_SCALE_PROPERTY_F import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.EDIT_MODE; import static com.android.launcher3.LauncherState.FLAG_MULTI_PAGE; import static com.android.launcher3.LauncherState.FLAG_NON_INTERACTIVE; import static com.android.launcher3.LauncherState.NORMAL; Loading @@ -44,6 +45,7 @@ import static com.android.launcher3.Utilities.postAsyncCallback; import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.getSupportedActions; import static com.android.launcher3.anim.Interpolators.EMPHASIZED; import static com.android.launcher3.config.FeatureFlags.FOLDABLE_SINGLE_PAGE; import static com.android.launcher3.config.FeatureFlags.MULTI_SELECT_EDIT_MODE; import static com.android.launcher3.config.FeatureFlags.SHOW_DOT_PAGINATION; import static com.android.launcher3.logging.StatsLogManager.EventEnum; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND; Loading Loading @@ -901,12 +903,8 @@ public class Launcher extends StatefulActivity<LauncherState> final int pendingAddWidgetId = requestArgs.getWidgetId(); Runnable exitSpringLoaded = new Runnable() { @Override public void run() { mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); } }; Runnable exitSpringLoaded = MULTI_SELECT_EDIT_MODE.get() ? null : () -> mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); if (requestCode == REQUEST_BIND_APPWIDGET) { // This is called only if the user did not previously have permissions to bind widgets Loading Loading @@ -1040,10 +1038,9 @@ public class Launcher extends StatefulActivity<LauncherState> final AppWidgetHostView layout = mAppWidgetHolder.createView(this, appWidgetId, requestArgs.getWidgetHandler().getProviderInfo(this)); boundWidget = layout; onCompleteRunnable = new Runnable() { @Override public void run() { onCompleteRunnable = () -> { completeAddAppWidget(appWidgetId, requestArgs, layout, null); if (!isInState(EDIT_MODE)) { mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); } }; Loading Loading @@ -1178,7 +1175,7 @@ public class Launcher extends StatefulActivity<LauncherState> } addActivityFlags(ACTIVITY_STATE_TRANSITION_ACTIVE); if (state == SPRING_LOADED) { if (state == SPRING_LOADED || state == EDIT_MODE) { // Prevent any Un/InstallShortcutReceivers from updating the db while we are // not on homescreen ItemInstallQueue.INSTANCE.get(this).pauseModelPush(FLAG_DRAG_AND_DROP); Loading Loading @@ -1532,7 +1529,8 @@ public class Launcher extends StatefulActivity<LauncherState> mStateManager.addStateListener(new StateManager.StateListener<LauncherState>() { @Override public void onStateTransitionComplete(LauncherState finalState) { if (mPrevLauncherState == SPRING_LOADED && finalState == NORMAL) { if ((mPrevLauncherState == SPRING_LOADED || mPrevLauncherState == EDIT_MODE) && finalState == NORMAL) { AppWidgetResizeFrame.showForWidget(launcherHostView, cellLayout); mStateManager.removeStateListener(this); } Loading Loading @@ -1900,13 +1898,9 @@ public class Launcher extends StatefulActivity<LauncherState> REQUEST_CREATE_APPWIDGET)) { // If the configuration flow was not started, add the widget Runnable onComplete = new Runnable() { @Override public void run() { // Exit spring loaded mode if necessary after adding the widget mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); } }; Runnable onComplete = MULTI_SELECT_EDIT_MODE.get() ? null : () -> mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); completeAddAppWidget(appWidgetId, info, boundWidget, addFlowHandler.getProviderInfo(this)); mWorkspace.removeExtraEmptyScreenDelayed(delay, false, onComplete); Loading src/com/android/launcher3/LauncherState.java +17 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_OVERVIEW; import static com.android.launcher3.testing.shared.TestProtocol.ALL_APPS_STATE_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.BACKGROUND_APP_STATE_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.EDIT_MODE_STATE_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.HINT_STATE_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.HINT_STATE_TWO_BUTTON_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL; Loading @@ -38,6 +39,7 @@ import androidx.annotation.FloatRange; import com.android.launcher3.statemanager.BaseState; import com.android.launcher3.statemanager.StateManager; import com.android.launcher3.states.EditModeState; import com.android.launcher3.states.HintState; import com.android.launcher3.states.SpringLoadedState; import com.android.launcher3.testing.shared.TestProtocol; Loading Loading @@ -103,7 +105,7 @@ public abstract class LauncherState implements BaseState<LauncherState> { } }; private static final LauncherState[] sAllStates = new LauncherState[10]; private static final LauncherState[] sAllStates = new LauncherState[11]; /** * TODO: Create a separate class for NORMAL state. Loading @@ -123,6 +125,7 @@ public abstract class LauncherState implements BaseState<LauncherState> { */ public static final LauncherState SPRING_LOADED = new SpringLoadedState( SPRING_LOADED_STATE_ORDINAL); public static final LauncherState EDIT_MODE = new EditModeState(EDIT_MODE_STATE_ORDINAL); public static final LauncherState ALL_APPS = new AllAppsState(ALL_APPS_STATE_ORDINAL); public static final LauncherState HINT_STATE = new HintState(HINT_STATE_ORDINAL); public static final LauncherState HINT_STATE_TWO_BUTTON = new HintState( Loading Loading @@ -328,7 +331,9 @@ public abstract class LauncherState implements BaseState<LauncherState> { * Gets the translation provider for workspace pages. */ public PageTranslationProvider getWorkspacePageTranslationProvider(Launcher launcher) { if (this != SPRING_LOADED || !launcher.getDeviceProfile().isTwoPanels) { if (this != SPRING_LOADED || this != EDIT_MODE || !launcher.getDeviceProfile().isTwoPanels) { return DEFAULT_PAGE_TRANSLATION_PROVIDER; } final float quarterPageSpacing = launcher.getWorkspace().getPageSpacing() / 4f; Loading @@ -343,6 +348,16 @@ public abstract class LauncherState implements BaseState<LauncherState> { }; } /** * Called when leaving this LauncherState * @param launcher - Launcher instance * @param toState - New LauncherState that is being entered */ public void onLeavingState(Launcher launcher, LauncherState toState) { // no-op // override to handle when leaving current LauncherState } @Override public LauncherState getHistoryForState(LauncherState previousState) { // No history is supported Loading src/com/android/launcher3/Workspace.java +30 −14 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.launcher3; import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.EDIT_MODE; import static com.android.launcher3.LauncherState.FLAG_MULTI_PAGE; import static com.android.launcher3.LauncherState.FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED; import static com.android.launcher3.LauncherState.FLAG_WORKSPACE_INACCESSIBLE; Loading Loading @@ -494,8 +495,9 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> } } // Always enter the spring loaded mode if (!mLauncher.isInState(EDIT_MODE)) { mLauncher.getStateManager().goToState(SPRING_LOADED); } mStatsLogManager.logger().withItemInfo(dragObject.dragInfo) .withInstanceId(dragObject.logInstanceId) .log(LauncherEvent.LAUNCHER_ITEM_DRAG_STARTED); Loading Loading @@ -1432,7 +1434,8 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> } private boolean workspaceInScrollableState() { return mLauncher.isInState(SPRING_LOADED) || !workspaceInModalState(); return mLauncher.isInState(SPRING_LOADED) || mLauncher.isInState(EDIT_MODE) || !workspaceInModalState(); } /** Loading Loading @@ -1526,6 +1529,7 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> @Override public void setState(LauncherState toState) { onStartStateTransition(); mLauncher.getStateManager().getState().onLeavingState(mLauncher, toState); mStateTransitionAnimation.setState(toState); onEndStateTransition(); } Loading @@ -1537,6 +1541,7 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> public void setStateWithAnimation( LauncherState toState, StateAnimationConfig config, PendingAnimation animation) { StateTransitionListener listener = new StateTransitionListener(); mLauncher.getStateManager().getState().onLeavingState(mLauncher, toState); mStateTransitionAnimation.setStateWithAnimation(toState, config, animation); // Invalidate the pages now, so that we have the visible pages before the Loading Loading @@ -1999,7 +2004,9 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> distance, false, d) || addToExistingFolderIfNecessary(cell, dropTargetLayout, mTargetCell, distance, d, false)) { if (!mLauncher.isInState(EDIT_MODE)) { mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); } return; } Loading Loading @@ -2128,14 +2135,19 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> // spring-loaded mode so the page meets the icon where it was picked up. final RunnableList callbackList = new RunnableList(); final Runnable onCompleteCallback = onCompleteRunnable; LauncherState currentState = mLauncher.getStateManager().getState(); mLauncher.getDragController().animateDragViewToOriginalPosition( /* onComplete= */ callbackList::executeAllAndDestroy, cell, SPRING_LOADED.getTransitionDuration(mLauncher, true /* isToState */)); currentState.getTransitionDuration(mLauncher, true /* isToState */)); if (!mLauncher.isInState(EDIT_MODE)) { mLauncher.getStateManager().goToState(NORMAL, /* delay= */ 0, onCompleteCallback == null ? null : forSuccessCallback( () -> callbackList.add(onCompleteCallback))); } else if (onCompleteCallback != null) { forSuccessCallback(() -> callbackList.add(onCompleteCallback)); } mLauncher.getDropTargetBar().onDragEnd(); parent.onDropChild(cell); return; Loading @@ -2159,8 +2171,12 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> } parent.onDropChild(cell); if (!mLauncher.isInState(EDIT_MODE)) { mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY, onCompleteRunnable == null ? null : forSuccessCallback(onCompleteRunnable)); } else if (onCompleteRunnable != null) { forSuccessCallback(onCompleteRunnable); } mStatsLogManager.logger().withItemInfo(d.dragInfo).withInstanceId(d.logInstanceId) .log(LauncherEvent.LAUNCHER_ITEM_DROP_COMPLETED); } Loading Loading @@ -2734,7 +2750,8 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> final int screenId = getIdForScreen(cellLayout); if (!mLauncher.isHotseatLayout(cellLayout) && screenId != getScreenIdForPageIndex(mCurrentPage) && !mLauncher.isInState(SPRING_LOADED)) { && !mLauncher.isInState(SPRING_LOADED) && !mLauncher.isInState(EDIT_MODE)) { snapToPage(getPageIndexForScreenId(screenId)); } Loading Loading @@ -2812,7 +2829,6 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> } else { // This is for other drag/drop cases, like dragging from All Apps mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); View view; switch (info.itemType) { Loading Loading
quickstep/src/com/android/quickstep/views/LauncherRecentsView.java +3 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.CLEAR_ALL_BUTTON; import static com.android.launcher3.LauncherState.EDIT_MODE; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.LauncherState.OVERVIEW; import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK; Loading Loading @@ -133,7 +134,8 @@ public class LauncherRecentsView extends RecentsView<QuickstepLauncher, Launcher @Override public void onStateTransitionComplete(LauncherState finalState) { if (finalState == NORMAL || finalState == SPRING_LOADED || finalState == ALL_APPS) { if (finalState == NORMAL || finalState == SPRING_LOADED || finalState == EDIT_MODE || finalState == ALL_APPS) { // Clean-up logic that occurs when recents is no longer in use/visible. reset(); } Loading
src/com/android/launcher3/CellLayout.java +4 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.launcher3; import static android.animation.ValueAnimator.areAnimatorsEnabled; import static com.android.launcher3.LauncherState.EDIT_MODE; import static com.android.launcher3.anim.Interpolators.DEACCEL_1_5; import static com.android.launcher3.dragndrop.DraggableView.DRAGGABLE_ICON; import static com.android.launcher3.icons.IconNormalizer.ICON_VISIBLE_AREA_FACTOR; Loading Loading @@ -571,8 +572,10 @@ public class CellLayout extends ViewGroup { } protected void updateBgAlpha() { if (!getWorkspace().mLauncher.isInState(EDIT_MODE)) { mBackground.setAlpha((int) (mSpringLoadedProgress * 255)); } } /** * Set the progress of this page's scroll Loading
src/com/android/launcher3/Launcher.java +13 −19 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import static com.android.launcher3.LauncherAnimUtils.WORKSPACE_SCALE_PROPERTY_F import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.EDIT_MODE; import static com.android.launcher3.LauncherState.FLAG_MULTI_PAGE; import static com.android.launcher3.LauncherState.FLAG_NON_INTERACTIVE; import static com.android.launcher3.LauncherState.NORMAL; Loading @@ -44,6 +45,7 @@ import static com.android.launcher3.Utilities.postAsyncCallback; import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.getSupportedActions; import static com.android.launcher3.anim.Interpolators.EMPHASIZED; import static com.android.launcher3.config.FeatureFlags.FOLDABLE_SINGLE_PAGE; import static com.android.launcher3.config.FeatureFlags.MULTI_SELECT_EDIT_MODE; import static com.android.launcher3.config.FeatureFlags.SHOW_DOT_PAGINATION; import static com.android.launcher3.logging.StatsLogManager.EventEnum; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND; Loading Loading @@ -901,12 +903,8 @@ public class Launcher extends StatefulActivity<LauncherState> final int pendingAddWidgetId = requestArgs.getWidgetId(); Runnable exitSpringLoaded = new Runnable() { @Override public void run() { mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); } }; Runnable exitSpringLoaded = MULTI_SELECT_EDIT_MODE.get() ? null : () -> mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); if (requestCode == REQUEST_BIND_APPWIDGET) { // This is called only if the user did not previously have permissions to bind widgets Loading Loading @@ -1040,10 +1038,9 @@ public class Launcher extends StatefulActivity<LauncherState> final AppWidgetHostView layout = mAppWidgetHolder.createView(this, appWidgetId, requestArgs.getWidgetHandler().getProviderInfo(this)); boundWidget = layout; onCompleteRunnable = new Runnable() { @Override public void run() { onCompleteRunnable = () -> { completeAddAppWidget(appWidgetId, requestArgs, layout, null); if (!isInState(EDIT_MODE)) { mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); } }; Loading Loading @@ -1178,7 +1175,7 @@ public class Launcher extends StatefulActivity<LauncherState> } addActivityFlags(ACTIVITY_STATE_TRANSITION_ACTIVE); if (state == SPRING_LOADED) { if (state == SPRING_LOADED || state == EDIT_MODE) { // Prevent any Un/InstallShortcutReceivers from updating the db while we are // not on homescreen ItemInstallQueue.INSTANCE.get(this).pauseModelPush(FLAG_DRAG_AND_DROP); Loading Loading @@ -1532,7 +1529,8 @@ public class Launcher extends StatefulActivity<LauncherState> mStateManager.addStateListener(new StateManager.StateListener<LauncherState>() { @Override public void onStateTransitionComplete(LauncherState finalState) { if (mPrevLauncherState == SPRING_LOADED && finalState == NORMAL) { if ((mPrevLauncherState == SPRING_LOADED || mPrevLauncherState == EDIT_MODE) && finalState == NORMAL) { AppWidgetResizeFrame.showForWidget(launcherHostView, cellLayout); mStateManager.removeStateListener(this); } Loading Loading @@ -1900,13 +1898,9 @@ public class Launcher extends StatefulActivity<LauncherState> REQUEST_CREATE_APPWIDGET)) { // If the configuration flow was not started, add the widget Runnable onComplete = new Runnable() { @Override public void run() { // Exit spring loaded mode if necessary after adding the widget mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); } }; Runnable onComplete = MULTI_SELECT_EDIT_MODE.get() ? null : () -> mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); completeAddAppWidget(appWidgetId, info, boundWidget, addFlowHandler.getProviderInfo(this)); mWorkspace.removeExtraEmptyScreenDelayed(delay, false, onComplete); Loading
src/com/android/launcher3/LauncherState.java +17 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_OVERVIEW; import static com.android.launcher3.testing.shared.TestProtocol.ALL_APPS_STATE_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.BACKGROUND_APP_STATE_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.EDIT_MODE_STATE_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.HINT_STATE_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.HINT_STATE_TWO_BUTTON_ORDINAL; import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL; Loading @@ -38,6 +39,7 @@ import androidx.annotation.FloatRange; import com.android.launcher3.statemanager.BaseState; import com.android.launcher3.statemanager.StateManager; import com.android.launcher3.states.EditModeState; import com.android.launcher3.states.HintState; import com.android.launcher3.states.SpringLoadedState; import com.android.launcher3.testing.shared.TestProtocol; Loading Loading @@ -103,7 +105,7 @@ public abstract class LauncherState implements BaseState<LauncherState> { } }; private static final LauncherState[] sAllStates = new LauncherState[10]; private static final LauncherState[] sAllStates = new LauncherState[11]; /** * TODO: Create a separate class for NORMAL state. Loading @@ -123,6 +125,7 @@ public abstract class LauncherState implements BaseState<LauncherState> { */ public static final LauncherState SPRING_LOADED = new SpringLoadedState( SPRING_LOADED_STATE_ORDINAL); public static final LauncherState EDIT_MODE = new EditModeState(EDIT_MODE_STATE_ORDINAL); public static final LauncherState ALL_APPS = new AllAppsState(ALL_APPS_STATE_ORDINAL); public static final LauncherState HINT_STATE = new HintState(HINT_STATE_ORDINAL); public static final LauncherState HINT_STATE_TWO_BUTTON = new HintState( Loading Loading @@ -328,7 +331,9 @@ public abstract class LauncherState implements BaseState<LauncherState> { * Gets the translation provider for workspace pages. */ public PageTranslationProvider getWorkspacePageTranslationProvider(Launcher launcher) { if (this != SPRING_LOADED || !launcher.getDeviceProfile().isTwoPanels) { if (this != SPRING_LOADED || this != EDIT_MODE || !launcher.getDeviceProfile().isTwoPanels) { return DEFAULT_PAGE_TRANSLATION_PROVIDER; } final float quarterPageSpacing = launcher.getWorkspace().getPageSpacing() / 4f; Loading @@ -343,6 +348,16 @@ public abstract class LauncherState implements BaseState<LauncherState> { }; } /** * Called when leaving this LauncherState * @param launcher - Launcher instance * @param toState - New LauncherState that is being entered */ public void onLeavingState(Launcher launcher, LauncherState toState) { // no-op // override to handle when leaving current LauncherState } @Override public LauncherState getHistoryForState(LauncherState previousState) { // No history is supported Loading
src/com/android/launcher3/Workspace.java +30 −14 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.launcher3; import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.EDIT_MODE; import static com.android.launcher3.LauncherState.FLAG_MULTI_PAGE; import static com.android.launcher3.LauncherState.FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED; import static com.android.launcher3.LauncherState.FLAG_WORKSPACE_INACCESSIBLE; Loading Loading @@ -494,8 +495,9 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> } } // Always enter the spring loaded mode if (!mLauncher.isInState(EDIT_MODE)) { mLauncher.getStateManager().goToState(SPRING_LOADED); } mStatsLogManager.logger().withItemInfo(dragObject.dragInfo) .withInstanceId(dragObject.logInstanceId) .log(LauncherEvent.LAUNCHER_ITEM_DRAG_STARTED); Loading Loading @@ -1432,7 +1434,8 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> } private boolean workspaceInScrollableState() { return mLauncher.isInState(SPRING_LOADED) || !workspaceInModalState(); return mLauncher.isInState(SPRING_LOADED) || mLauncher.isInState(EDIT_MODE) || !workspaceInModalState(); } /** Loading Loading @@ -1526,6 +1529,7 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> @Override public void setState(LauncherState toState) { onStartStateTransition(); mLauncher.getStateManager().getState().onLeavingState(mLauncher, toState); mStateTransitionAnimation.setState(toState); onEndStateTransition(); } Loading @@ -1537,6 +1541,7 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> public void setStateWithAnimation( LauncherState toState, StateAnimationConfig config, PendingAnimation animation) { StateTransitionListener listener = new StateTransitionListener(); mLauncher.getStateManager().getState().onLeavingState(mLauncher, toState); mStateTransitionAnimation.setStateWithAnimation(toState, config, animation); // Invalidate the pages now, so that we have the visible pages before the Loading Loading @@ -1999,7 +2004,9 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> distance, false, d) || addToExistingFolderIfNecessary(cell, dropTargetLayout, mTargetCell, distance, d, false)) { if (!mLauncher.isInState(EDIT_MODE)) { mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); } return; } Loading Loading @@ -2128,14 +2135,19 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> // spring-loaded mode so the page meets the icon where it was picked up. final RunnableList callbackList = new RunnableList(); final Runnable onCompleteCallback = onCompleteRunnable; LauncherState currentState = mLauncher.getStateManager().getState(); mLauncher.getDragController().animateDragViewToOriginalPosition( /* onComplete= */ callbackList::executeAllAndDestroy, cell, SPRING_LOADED.getTransitionDuration(mLauncher, true /* isToState */)); currentState.getTransitionDuration(mLauncher, true /* isToState */)); if (!mLauncher.isInState(EDIT_MODE)) { mLauncher.getStateManager().goToState(NORMAL, /* delay= */ 0, onCompleteCallback == null ? null : forSuccessCallback( () -> callbackList.add(onCompleteCallback))); } else if (onCompleteCallback != null) { forSuccessCallback(() -> callbackList.add(onCompleteCallback)); } mLauncher.getDropTargetBar().onDragEnd(); parent.onDropChild(cell); return; Loading @@ -2159,8 +2171,12 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> } parent.onDropChild(cell); if (!mLauncher.isInState(EDIT_MODE)) { mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY, onCompleteRunnable == null ? null : forSuccessCallback(onCompleteRunnable)); } else if (onCompleteRunnable != null) { forSuccessCallback(onCompleteRunnable); } mStatsLogManager.logger().withItemInfo(d.dragInfo).withInstanceId(d.logInstanceId) .log(LauncherEvent.LAUNCHER_ITEM_DROP_COMPLETED); } Loading Loading @@ -2734,7 +2750,8 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> final int screenId = getIdForScreen(cellLayout); if (!mLauncher.isHotseatLayout(cellLayout) && screenId != getScreenIdForPageIndex(mCurrentPage) && !mLauncher.isInState(SPRING_LOADED)) { && !mLauncher.isInState(SPRING_LOADED) && !mLauncher.isInState(EDIT_MODE)) { snapToPage(getPageIndexForScreenId(screenId)); } Loading Loading @@ -2812,7 +2829,6 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> } else { // This is for other drag/drop cases, like dragging from All Apps mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY); View view; switch (info.itemType) { Loading