Disable pinch gesture when accessibility is enabled.
Bug: 27676309
Change-Id: Iba0f04693c494f258ef21d740ee933f9c32a7674
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 7311cce..9795498 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -84,6 +84,7 @@
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
import android.view.animation.OvershootInterpolator;
import android.view.inputmethod.InputMethodManager;
import android.widget.Advanceable;
@@ -138,7 +139,8 @@
*/
public class Launcher extends Activity
implements View.OnClickListener, OnLongClickListener, LauncherModel.Callbacks,
- View.OnTouchListener, PageSwitchListener, LauncherProviderChangeListener {
+ View.OnTouchListener, PageSwitchListener, LauncherProviderChangeListener,
+ AccessibilityManager.AccessibilityStateChangeListener {
public static final String TAG = "Launcher";
static final boolean LOGD = false;
@@ -452,6 +454,9 @@
mExtractedColors = new ExtractedColors();
loadExtractedColorsAndColorItems();
+ ((AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE))
+ .addAccessibilityStateChangeListener(this);
+
lockAllApps();
mSavedState = savedInstanceState;
@@ -2011,6 +2016,9 @@
TextKeyListener.getInstance().release();
+ ((AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE))
+ .removeAccessibilityStateChangeListener(this);
+
unregisterReceiver(mCloseSystemDialogsReceiver);
LauncherAnimUtils.onDestroyActivity();
@@ -2794,6 +2802,11 @@
return mHapticFeedbackTouchListener;
}
+ @Override
+ public void onAccessibilityStateChanged(boolean enabled) {
+ mDragLayer.onAccessibilityStateChanged(enabled);
+ }
+
public void onDragStarted(View view) {
if (isOnCustomContent()) {
// Custom content screen doesn't participate in drag and drop. If on custom
diff --git a/src/com/android/launcher3/dragndrop/DragLayer.java b/src/com/android/launcher3/dragndrop/DragLayer.java
index 58f98bf..33ce683 100644
--- a/src/com/android/launcher3/dragndrop/DragLayer.java
+++ b/src/com/android/launcher3/dragndrop/DragLayer.java
@@ -29,6 +29,7 @@
import android.graphics.Region;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.DragEvent;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -43,7 +44,6 @@
import com.android.launcher3.AppWidgetResizeFrame;
import com.android.launcher3.CellLayout;
-import com.android.launcher3.Hotseat;
import com.android.launcher3.InsettableFrameLayout;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.Launcher;
@@ -142,9 +142,9 @@
mLauncher = launcher;
mDragController = controller;
- if (!FeatureFlags.LAUNCHER3_DISABLE_PINCH_TO_OVERVIEW) {
- mPinchListener = new PinchToOverviewListener(mLauncher);
- }
+ boolean isAccessibilityEnabled = ((AccessibilityManager) mLauncher.getSystemService(
+ Context.ACCESSIBILITY_SERVICE)).isEnabled();
+ onAccessibilityStateChanged(isAccessibilityEnabled);
}
@Override
@@ -152,6 +152,11 @@
return mDragController.dispatchKeyEvent(event) || super.dispatchKeyEvent(event);
}
+ public void onAccessibilityStateChanged(boolean isAccessibilityEnabled) {
+ mPinchListener = FeatureFlags.LAUNCHER3_DISABLE_PINCH_TO_OVERVIEW || isAccessibilityEnabled
+ ? null : new PinchToOverviewListener(mLauncher);
+ }
+
public void showOverlayView(View overlayView) {
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
mOverlayView = overlayView;