Commit Graph

18945 Commits

Author SHA1 Message Date
SuperDragonXD
b2068eaaf1 fix: Bring back icon badges for work profile 2025-12-24 09:09:19 +08:00
Abhishek Sharma
8c36c72efc feat: Add option to clear home screen in settings (#6125)
Signed-off-by: abhixv <abhi.sharma1@hotmail.com>
2025-12-20 05:56:30 +08:00
Pun Butrach
f831a3bf4e fix: Ignore generatedPreviews flags on Vanilla Ice Cream and above
This is always enabled on correct AOSP implementations, crashes should be handled by OEM
2025-12-05 22:51:06 +07:00
ELY M.
736e6c85d6 feat: Support infinite scroll on home screen (#5807)
* scrolling

* removed logging from the scrolling part in pagedview

* added toggle for infinite scrolling

* strings

* scrolling preferences moved

* string fix
2025-12-03 09:54:40 +07:00
Clément Gayot
fb845d1460 fix: Revert "Align widget padding to icons" (#6135) 2025-12-01 06:15:44 +08:00
MrSluffy
1bb5878457 feat(deck): app categorization to folders using flowerpot
- Categorize apps using flowerpot and organize into folders
- Add blocking loading dialog during categorization process
- Prevent user cancellation during workspace setup
- Auto-add newly installed apps to appropriate folders

- closes : #5846
2025-11-16 11:55:24 +08:00
Pun Butrach
bc6d92f454 fix: Window Insets crashes on less than Android 11 (#6060)
* fix: Window Insets crashes on less than Android 11

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>

* Apply suggestion from @validcube

---------

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-11-10 05:38:13 +08:00
Pun Butrach
5a863fb700 fix: Shortcut get disabled reason crashes on Android 8.1 (#6061)
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-11-10 05:37:13 +08:00
SuperDragonXD
dd786afa4b fix(allapps): Hide app drawer folders in work/private profiles (#6002)
Prevents app drawer folders from being displayed within the work or private space profiles to avoid state complexity.
2025-10-20 15:21:33 +08:00
MrSluffy
11a4b09680 fixed: all app icons changes too when home icons is > 120
- Closes : #5943
2025-10-12 17:00:20 +08:00
Chaikew
5635846e0d feat(ui): Add toggle to disable search bar background in app drawer (#5934)
* feat(ui): Add toggle to disable search bar background in app drawer

* Fix double opacity on the Search Bar's background

- Before, the Search Bar added another -possibly transparent- layer on top of the already existing app drawer background.
- This adds a toggle to disable the double-opacity
- It is made so it is non regressive

Fixes #4158

* style(strings): Fixed inconsistency
2025-10-09 15:09:47 +08:00
Himanshu Garg
a2545ee91e Fix app drawer icon scaling when home screen icons are resized (#5932)
* Fix foldable device layout issue on Pixel 9 Pro Fold

- Enable two-panel layout for all multi-display devices (foldables)
- Previously required both isTablet && isMultiDisplay conditions
- Foldable devices may not meet 600dp tablet width threshold when unfolded
- This ensures proper layout utilization of available screen space

Fixes #5920

* Fix app drawer icon scaling when home screen icons are resized

- Prevent home screen icon scale from affecting app drawer layout
- When mIsScalableGrid is true, use separate scaling for app drawer elements
- This fixes the 'zoomed out' appearance in app drawer when home screen
  icons are scaled to 120% or higher
- App drawer now maintains independent sizing from home screen

Fixes #5912

* Remove code comments from fixes

- Clean up code by removing explanatory comments
- Keep changes minimal and focused
2025-10-08 14:30:56 +08:00
Pun Butrach
6b04c12f4b fix: Icon not responding to mouse cursor [Backport 354b64b] (#5895)
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-10-02 16:32:34 +08:00
Berke Emin Kabagöz
cb8b206a50 Fix android 14 crashes (#5620) 2025-09-28 09:21:02 +08:00
MrSluffy
e4d8d3c0c0 fixed : add retry count mechanism for widget configuration
- closes : #5765
- closes : #5764
- closes : #5534
- closes : #5505
- closes : #4533
2025-09-06 15:31:16 +08:00
SuperDragonXD
bac85d2915 refactor(permissions): Unify file and media permission handling (#5683)
This commit completes the work started in the search refactor by migrating all remaining legacy file/media permission checks to the new, centralized `FileAccessManager`.

Previously, features like the wallpaper preview and backup system used the side-effect based permission model that created a poor user experience, especially on modern Android versions.

This change unifies all file and media access logic under the new, observable `StateFlow`-based system. This includes:

- Refactoring the wallpaper drawable access logic to correctly handle the various states of media permissions on Android 13+. This is disabled by default on Play Store builds, due to lack of `MANAGE_EXTERNAL_STORAGE` permission.
- Updating the backup/restore system to use the new manager.
- Updating the blur wallpaper feature to use the new manager.
- Migrating the OTA update check to use the new manager.
- Replacing the "Notification Dots" permission bottom sheet with the new, simpler `PermissionDialog` for UI consistency.

Credit-to: @lebao3105 for the initial analysis of the wallpaper permission issue.

Fixes #5632
Fixes #5676
2025-07-30 12:43:37 +08:00
SuperDragonXD
64f0d29671 feat(search): refactor search settings UI
TODO: improve permission handling for other parts of the UI
2025-07-29 17:55:41 +08:00
SuperDragonXD
47cce0d7a3 feat(search): improve empty search results UX 2025-07-29 17:55:41 +08:00
SuperDragonXD
ff8c5a827b Don't remove icons when dragging apps from app drawer folders
Fixes #5374
2025-07-16 17:35:50 +08:00
Pun Butrach
2fcaf0a5ec Don't call setAccessibilityPaneTitle when device is not at least Android 9 (#5603)
* Update WidgetsTwoPaneSheet.java

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>

* Update PopupContainerWithArrow.java

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>

* Update SplitInstructionsView.java

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>

* Update TaskbarView.java

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>

---------

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-07-14 14:19:58 +08:00
Adil Hanney
0d18a381da Fix: Adapt to missing flags in Android 16 QPR1 Beta 2 (#5538)
* Fix: Adapt to missing Flags in android 16 qpr1 beta 2

* fix: revert jvm memory flag

I accidentally committed it, oops

Co-authored-by: Pun Butrach <pun.butrach@gmail.com>

---------

Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2025-06-15 15:16:08 +08:00
SuperDragonXD
9f874617ef Move icon swipe gestures to experimental features
Fixes #5297
Closes #5451
2025-05-12 16:08:23 +08:00
John Andrew Camu
2623e42dad feat : initial implementation icon gesture support (#5266)
- closes : #2787
- closes : #5259
2025-02-17 11:45:04 +08:00
MrSluffy
a0b5a17ca8 fixed : label disappear in workspace
- closes : #5256
2025-02-15 07:33:33 +08:00
MrSluffy
473121ad53 feat : add option toggle label in dock
- closes : #4457
2025-02-14 19:47:15 +08:00
John Andrew Camu
dd3725c30d feat : initial implementation of LawnDeck (#5255)
Introducing the home screen layout feature! Now, users have the ability to personalize their experience by disabling the app drawer and arranging apps directly on their home screen.

- closes : #4323
2025-02-14 14:46:44 +08:00
MrSluffy
210a4b564c feat : re-impliment AccentColorExtractor
- closes : #5243
2025-02-12 19:08:37 +08:00
MrSluffy
da5edb9015 fixed : crashes in A15 qpr1 2025-02-12 16:21:25 +08:00
MrSluffy
10ec24ca9e enh : restore split configuration
- only tested in pixel fold emulator
2025-02-01 12:16:20 +08:00
MrSluffy
8630ae61aa fixed : remove duplicate condition 2025-01-23 11:42:56 +08:00
John Andrew Camu
95b87da6bd feat: initial implementation of custom app drawer folder (#5189)
- Implemented basic CRUD operations for app drawer folders.
- Moved wallpaper database to preference database for better organization.

closes :
- #4674
- #4710
- #4475
- #3481
2025-01-21 16:15:27 +08:00
MrSluffy
65954e0498 enh: fix themed preview folder for home-only 2025-01-15 17:57:07 +08:00
Yaksh Bariya
9d19ded3ec Fix upstream bug with dots enabled (#5167)
https://github.com/GrapheneOS/os-issue-tracker/issues/2601

I did not find any issue reported upstream, but I can confirm that this
bug exists on Moto App Launcher (the launcher on Motorola's devices),
which seems to imply this is a bug in AOSP itself. I had asked
@agnostic-apollo about this is a bug, and he said that this is a bug in
Android's libraries itself
2025-01-15 15:36:26 +08:00
MrSluffy
dc9adb7a12 enh : add DISPLAY_DRAWER_FOLDER in condition 2025-01-15 13:51:19 +08:00
John Andrew Camu
448d718e6a feat : Initial implementation Caddy (#5166)
- Introduced "Caddy" functionality to organize apps within the app drawer.
- Allows grouping of applications for better accessibility and user experience.
- Serves as a foundational feature for enhancing app drawer usability.
2025-01-15 13:01:51 +08:00
MrSluffy
28a01a979e enable ENABLE_WIDGET_HOST_IN_BACKGROUND by default 2025-01-10 08:07:30 +08:00
MrSluffy
7a822b0ce5 enh : don't show carousel in smartspace/atglance
- tweak ui enhancement
- closes : #5152
2025-01-10 07:51:02 +08:00
John Andrew Camu
3a1e1389a2 feat : wallpaper pop-up carousel (#5143) 2025-01-08 19:04:28 +08:00
MrSluffy
66928cc74d feat : App drawer color 2025-01-07 14:29:00 +08:00
MrSluffy
134c2193d2 feat : hotseat bg configuration
- bg transparency, color
2025-01-07 13:31:11 +08:00
SuperDragonXD
c2665df04f Allow re-arranging popup menu items (#5112)
* feat: Allow re-arranging popup menu items

* Refactor draggable preferences

* Refactor options pop-up drag and drop view

- Move to new screen
- Separate preview and options
2025-01-05 08:30:36 +08:00
MrSluffy
38934f824f feat : Adjust page-indicator height to space workspace and hotseat
closes : #4836
2025-01-03 13:17:19 +08:00
MrSluffy
bd119f5b4b fixed saved scroll position 2025-01-03 08:05:49 +08:00
MrSluffy
b684505009 fixed 3p themed icons not applying
- closes : #4799
- closes : #4752
- closes : #4267
- closes : #4248
- closes : #4179
- closes : #4157
- closes : #3960
- closes : #3943
- closes : #3408
- closes : #2882
2025-01-01 09:56:15 +08:00
MrSluffy
eb536c182b fixed adaptive-icon not applying 2024-12-30 12:07:17 +08:00
MrSluffy
aa8dd44d6a Fix widget configuration for two-step process
- closes : #5124

Bug: java.lang.IllegalArgumentException: Bad widget id 2367
2024-12-30 08:32:28 +08:00
MrSluffy
4ad2e73075 Fix NullPointerException in WidgetSizes.updateWidgetSizeRangesAsync
This commit addresses a NullPointerException that occurs when updating
widget options in the WidgetSizes class. The fix includes:

- Adding null checks for sizeOptions and currentOptions
- Comparing new sizes with current sizes before updating
- Catching and logging exceptions during widget option updates
- Returning null from getWidgetSizeOptions if it fails to create a valid Bundle

These changes should resolve the "Attempt to invoke virtual method 'void
android.os.Bundle.putAll(android.os.Bundle)' on a null object reference" error
and improve the robustness of widget size updates.

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.putAll(android.os.Bundle)' on a null object reference
at android.os.Parcel.createExceptionOrNull(Parcel.java:3075)
at android.os.Parcel.createException(Parcel.java:3053)
at android.os.Parcel.readException(Parcel.java:3036)
at android.os.Parcel.readException(Parcel.java:2978)
at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.updateAppWidgetOptions(IAppWidgetService.java:1017)
at android.appwidget.AppWidgetManager.updateAppWidgetOptions(AppWidgetManager.java:727)
at com.android.launcher3.widget.util.WidgetSizes.lambda$updateWidgetSizeRangesAsync$0(Unknown Source:31)
at com.android.launcher3.widget.util.WidgetSizes.a(Unknown Source:0)
at ba.a.run(Unknown Source:10)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.appwidget.AppWidgetServiceImpl.updateAppWidgetOptions(AppWidgetServiceImpl.java:2193)
at com.android.internal.appwidget.IAppWidgetService$Stub.onTransact(IAppWidgetService.java:500)
at android.os.Binder.execTransactInternal(Binder.java:1375)
at android.os.Binder.execTransact(Binder.java:1311)
2024-12-28 09:31:58 +08:00
MrSluffy
d401ba32fd Fix widget-related crash in LauncherWidgetHolder
- Adding null checks before calling methods on mWidgetHost
- Ensuring the listening flag is always updated, even if an exception occurs

This should resolve the "java.lang.NullPointerException: Attempt to read from
field 'com.android.server.appwidget.AppWidgetServiceImpl$ProviderId'" error
and improve overall stability when dealing with widgets

error: Uncaught exception

java.lang.RuntimeException: Unable to stop activity {app.lawnchair.nightly/app.lawnchair.LawnchairLauncher}: java.lang.NullPointerException: Attempt to read from field 'com.android.server.appwidget.AppWidgetServiceImpl$ProviderId com.android.server.appwidget.AppWidgetServiceImpl$Provider.id' on a null object reference in method 'android.util.SparseArray com.android.server.appwidget.AppWidgetServiceImpl$Host.getWidgetUids()'
at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:5484)
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:5456)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:5525)
at android.app.servertransaction.StopActivityItem.execute(StopActivityItem.java:43)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2423)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:233)
at android.os.Looper.loop(Looper.java:334)
at android.app.ActivityThread.main(ActivityThread.java:8348)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:582)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1065)
Caused by: java.lang.NullPointerException: Attempt to read from field 'com.android.server.appwidget.AppWidgetServiceImpl$ProviderId com.android.server.appwidget.AppWidgetServiceImpl$Provider.id' on a null object reference in method 'android.util.SparseArray com.android.server.appwidget.AppWidgetServiceImpl$Host.getWidgetUids()'
at android.os.Parcel.createExceptionOrNull(Parcel.java:2446)
at android.os.Parcel.createException(Parcel.java:2424)
at android.os.Parcel.readException(Parcel.java:2407)
at android.os.Parcel.readException(Parcel.java:2349)
at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.stopListening(IAppWidgetService.java:792)
at android.appwidget.AppWidgetHost.stopListening(AppWidgetHost.java:274)
at com.android.launcher3.widget.LauncherWidgetHolder.stopListening(Unknown Source:2)
at com.android.launcher3.widget.LauncherWidgetHolder.setShouldListenFlag(Unknown Source:40)
at com.android.launcher3.widget.LauncherWidgetHolder.setActivityStarted(Unknown Source:1)
at com.android.launcher3.Launcher.onStop(Unknown Source:25)
at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1496)
at android.app.Activity.performStop(Activity.java:8599)
at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:5476)
... 14 more
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.appwidget.AppWidgetServiceImpl$Host.getWidgetUids(AppWidgetServiceImpl.java:4444)
at com.android.server.appwidget.AppWidgetServiceImpl.stopListening(AppWidgetServiceImpl.java:866)
at com.android.internal.appwidget.IAppWidgetService$Stub.onTransact(IAppWidgetService.java:311)
at android.os.Binder.execTransactInternal(Binder.java:1179)
at android.os.Binder.execTransact(Binder.java:1143)
2024-12-28 09:24:35 +08:00
MrSluffy
99b65be3c2 Fixed crashes on android 8 2024-12-27 15:46:16 +08:00
MrSluffy
7169349f02 properly check for archiving support 2024-12-27 10:44:48 +08:00