From 9f874617ef6fc4e22b2a7f5ddd165a7a5874cf40 Mon Sep 17 00:00:00 2001 From: SuperDragonXD <70206496+SuperDragonXD@users.noreply.github.com> Date: Mon, 12 May 2025 16:06:47 +0800 Subject: [PATCH] Move icon swipe gestures to experimental features Fixes #5297 Closes #5451 --- lawnchair/res/values/strings.xml | 2 ++ lawnchair/src/app/lawnchair/override/CustomizeDialog.kt | 2 +- .../src/app/lawnchair/preferences2/PreferenceManager2.kt | 5 +++++ .../destinations/ExperimentalFeaturesPreferences.kt | 5 +++++ src/com/android/launcher3/Workspace.java | 4 +++- 5 files changed, 16 insertions(+), 2 deletions(-) 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; }