diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2017-12-22 11:11:33 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2017-12-22 11:11:54 -0800 |
commit | 7c8a65e740a118969e8de1e9a4e73b6768e725c1 (patch) | |
tree | ba3de81c1678980768a0eb556630e6db045eeee1 /src/com | |
parent | 8c8fdec3e967286106c369db18e8bb69e5da4542 (diff) | |
download | packages_apps_Trebuchet-7c8a65e740a118969e8de1e9a4e73b6768e725c1.tar.gz packages_apps_Trebuchet-7c8a65e740a118969e8de1e9a4e73b6768e725c1.tar.bz2 packages_apps_Trebuchet-7c8a65e740a118969e8de1e9a4e73b6768e725c1.zip |
Adding support for auto-cancelling an action mode when interacting with launcher
Change-Id: Iba0207e36e9e5bd94bd9016318a4e00c6e1f6393
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/launcher3/AbstractFloatingView.java | 1 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 29 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherStateManager.java | 1 | ||||
-rw-r--r-- | src/com/android/launcher3/dragndrop/DragLayer.java | 2 |
4 files changed, 33 insertions, 0 deletions
diff --git a/src/com/android/launcher3/AbstractFloatingView.java b/src/com/android/launcher3/AbstractFloatingView.java index da464c007..8e64346ab 100644 --- a/src/com/android/launcher3/AbstractFloatingView.java +++ b/src/com/android/launcher3/AbstractFloatingView.java @@ -153,6 +153,7 @@ public abstract class AbstractFloatingView extends LinearLayout implements Touch public static void closeAllOpenViews(Launcher launcher, boolean animate) { closeOpenViews(launcher, animate, TYPE_ALL); + launcher.finishAutoCancelActionMode(); } public static void closeAllOpenViews(Launcher launcher) { diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 44660ecc1..a403f7106 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -72,6 +72,7 @@ import android.text.TextUtils; import android.text.method.TextKeyListener; import android.util.Log; import android.util.SparseArray; +import android.view.ActionMode; import android.view.Display; import android.view.HapticFeedbackConstants; import android.view.KeyEvent; @@ -198,6 +199,10 @@ public class Launcher extends BaseActivity // Type: SparseArray<Parcelable> private static final String RUNTIME_STATE_WIDGET_PANEL = "launcher.widget_panel"; + // When starting an action mode, setting this tag will cause the action mode to be cancelled + // automatically when user interacts with the launcher. + public static final Object AUTO_CANCEL_ACTION_MODE = new Object(); + private LauncherStateManager mStateManager; private boolean mIsSafeModeEnabled; @@ -275,6 +280,7 @@ public class Launcher extends BaseActivity private boolean mAppLaunchSuccess; private RotationPrefChangeHandler mRotationPrefChangeHandler; + private ActionMode mCurrentActionMode; @Override protected void onCreate(Bundle savedInstanceState) { @@ -1626,6 +1632,9 @@ public class Launcher extends BaseActivity @Override public void onBackPressed() { + if (finishAutoCancelActionMode()) { + return; + } if (mLauncherCallbacks != null && mLauncherCallbacks.handleBackPressed()) { return; } @@ -3015,6 +3024,26 @@ public class Launcher extends BaseActivity } } + @Override + public void onActionModeStarted(ActionMode mode) { + super.onActionModeStarted(mode); + mCurrentActionMode = mode; + } + + @Override + public void onActionModeFinished(ActionMode mode) { + super.onActionModeFinished(mode); + mCurrentActionMode = null; + } + + public boolean finishAutoCancelActionMode() { + if (mCurrentActionMode != null && AUTO_CANCEL_ACTION_MODE == mCurrentActionMode.getTag()) { + mCurrentActionMode.finish(); + return true; + } + return false; + } + /** * Callback for listening for onResume */ diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java index 0137b26bf..d25f958bd 100644 --- a/src/com/android/launcher3/LauncherStateManager.java +++ b/src/com/android/launcher3/LauncherStateManager.java @@ -264,6 +264,7 @@ public class LauncherStateManager { private void onStateTransitionEnd(LauncherState state) { mLauncher.getWorkspace().setClipChildren(!state.disablePageClipping); mLauncher.getUserEventDispatcher().resetElapsedContainerMillis(); + mLauncher.finishAutoCancelActionMode(); } /** diff --git a/src/com/android/launcher3/dragndrop/DragLayer.java b/src/com/android/launcher3/dragndrop/DragLayer.java index 27d6b896a..c75e61632 100644 --- a/src/com/android/launcher3/dragndrop/DragLayer.java +++ b/src/com/android/launcher3/dragndrop/DragLayer.java @@ -157,6 +157,8 @@ public class DragLayer extends InsettableFrameLayout { mTouchCompleteListener.onTouchComplete(); } mTouchCompleteListener = null; + } else if (action == MotionEvent.ACTION_DOWN) { + mLauncher.finishAutoCancelActionMode(); } mActiveController = null; |