diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml index 7fc90aa95f..2c8f04f1af 100644 --- a/lawnchair/res/values/strings.xml +++ b/lawnchair/res/values/strings.xml @@ -792,4 +792,6 @@ Show web suggestion provider icon in search bar Match dock search bar actions Clicking the dock search bar will now open the app drawer search UI + Icon swipe gestures + Perform acttions when swiping left or right on icons instead of moving the home screen diff --git a/lawnchair/src/app/lawnchair/override/CustomizeDialog.kt b/lawnchair/src/app/lawnchair/override/CustomizeDialog.kt index 834f22103b..b6b8003707 100644 --- a/lawnchair/src/app/lawnchair/override/CustomizeDialog.kt +++ b/lawnchair/src/app/lawnchair/override/CustomizeDialog.kt @@ -172,7 +172,7 @@ fun CustomizeAppDialog( ) } - if (context.launcher.stateManager.state != LauncherState.ALL_APPS) { + if (preferenceManager2.iconSwipeGestures.asState().value && context.launcher.stateManager.state != LauncherState.ALL_APPS) { PreferenceGroup(heading = stringResource(R.string.gestures_label)) { listOf( GestureType.SWIPE_LEFT, diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt index 66af0600f5..7518ca0f16 100644 --- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt +++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt @@ -670,6 +670,11 @@ class PreferenceManager2 private constructor(private val context: Context) : onSet = { reloadHelper.reloadGrid() }, ) + val iconSwipeGestures = preference( + key = booleanPreferencesKey(name = "icon_swipe_gestures"), + defaultValue = false, + ) + val doubleTapGestureHandler = serializablePreference( key = stringPreferencesKey("double_tap_gesture_handler"), defaultValue = GestureHandlerConfig.Sleep, diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/ExperimentalFeaturesPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/ExperimentalFeaturesPreferences.kt index 0e09d5d790..d2c7001597 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/ExperimentalFeaturesPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/ExperimentalFeaturesPreferences.kt @@ -46,6 +46,11 @@ fun ExperimentalFeaturesPreferences( label = stringResource(id = R.string.always_reload_icons_label), description = stringResource(id = R.string.always_reload_icons_description), ) + SwitchPreference( + adapter = prefs2.iconSwipeGestures.getAdapter(), + label = stringResource(R.string.icon_swipe_gestures), + description = stringResource(R.string.icon_swipe_gestures_description), + ) val enableWallpaperBlur = prefs.enableWallpaperBlur.getAdapter() diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 523f99dfeb..534e8e05b3 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1208,7 +1208,9 @@ public class Workspace extends PagedView public boolean onInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View touchedView = findViewAtPosition(ev.getX(), ev.getY()); - if (touchedView instanceof ShortcutAndWidgetContainer container) { + Boolean iconSwipeGestures = PreferenceExtensionsKt.firstBlocking(mPreferenceManager2.getIconSwipeGestures()); + + if (iconSwipeGestures && touchedView instanceof ShortcutAndWidgetContainer container) { container.onTouchEvent(ev); return false; }