Commit Graph
112 Commits
Author SHA1 Message Date
Pun Butrach 83658ce7eb perf: Cache PreferenceManager2 in memory (#6897)
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2026-06-19 18:21:55 +00:00
x-JOCandClaude Opus 4.8 5de4bb09fa feat: Nova-style padding controls (#6872)
Adds user-configurable spacing controls (similar to Nova Launcher):

- Workspace padding: horizontal & vertical sliders (Home screen > Layout).
  Horizontal factor is applied to the source margin so cells fill the
  freed space; vertical factor preserves the dock reservation so the last
  row never overlaps the hotseat.
- Widget padding: slider (Home screen > Widgets), 0% removes the forced
  padding, up to 200%.
- App drawer top padding slider (App drawer > Grid).
- Widget resize: respect the overridden resize mode so force/unlimited
  resize shows handles even for widgets whose provider limits resizing.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 01:51:23 +08:00
Pun Butrach 9b90822395 fix: Disable material expressive folder expansion animations 2026-01-10 20:51:07 +07:00
Abhishek Sharma 5f3a03f4fb feat: Add option to clear home screen in settings (#6125)
Signed-off-by: abhixv <abhi.sharma1@hotmail.com>
2026-01-10 20:51:01 +07:00
Pun Butrach 0e8b200bab fix: Just make submodule stay the same please intellj 2026-01-10 20:50:12 +07:00
Pun Butrach edfd0baad6 fix: Android 14/15 crash 2026-01-10 20:49:55 +07:00
Pun Butrach d36845897b feat: Better At-a-Glance perceptive wallpaper colour luminance detection 2026-01-10 20:49:46 +07:00
Pun Butrach 2e76c99dad fix: Conflict incoming changes from 15-dev 2026-01-10 20:49:12 +07:00
Pun Butrach 11f7abcb66 chore: Cleanup, and hidden feature logged
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2026-01-10 20:48:25 +07:00
Pun Butrach 7a5699e721 fix: A lot of stuff 2026-01-10 20:48:21 +07:00
Pun Butrach 0a446431eb build: SNAPSHOT 0 (Draft) 2026-01-10 20:47:59 +07:00
Pun Butrach b67168f737 Allocate insane memory just for CI
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2026-01-10 20:46:44 +07:00
Pun Butrach dd4a08be61 Merge tag 'android-16.0.0_r3' into 16-dev
Android 16.0.0 Release 3 (BP3A.250905.014)

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2026-01-10 20:46:04 +07:00
Shamali P de578610a1 Account for cell size changes in resize frame when changing display size
- On display change, we don't seem to re-arrange workspace widgets
 whose current span size may no longer be a valid
- In some cases, the existing span showing on workspace is less than
the widget's min size and user is unable to resize to the correct size.
- Ideally irrespective of problem they should be able to resize to
 correct size.

This cl lets user resize to valid size. In another bug we might want to
evaluate refreshing / updating widgets on display change.

Bug: 408974387
Test: See demo
Flag: EXEMPT BUGFIX
Change-Id: I9712a20739ec8ee1de9d85f22814c7f1b3474e47
2025-04-30 02:06:05 +00:00
Ana Salazar Maldonado 71c38ab75c Add Widget Resize Frame actions
Demos:
http://screencast/cast/NTE1NDE3NzM0MzgxNTY4MHwxYzQ2MDVlOC1mOQ
http://screencast/cast/NTcwNTM3ODE5MTkwMDY3Mnw5MDBiNzAzMS03MA

Bug: 374248904
Test: manual - activate talkback, add new widget
Flag: EXEMPT bug fix
Change-Id: I80ab0da75ec054709a28f41d9ceabce9e94866d9
2025-03-11 12:39:12 -07:00
Rafael de Moura Dev a35d1f2a68 some fixes for lower Android versions (#5046)
* fixed java.lang.NoSuchMethodError: No interface method toList()

´´´
Ljava/util/List; in class Ljava/util/stream/Stream; or its super classes (declaration of 'java.util.stream.Stream' appears in /system/framework/core-oj.jar)
                                                                                                                            	at com.android.launcher3.model.WidgetsModel.getFilteredWidgetsListForPicker(WidgetsModel.java:99)
                                                                                                                            	at com.android.launcher3.model.WidgetsModel.getWidgetsListForPicker(WidgetsModel.java:122)
                                                                                                                            	at com.android.launcher3.model.BaseLauncherBinder.bindWidgets(BaseLauncherBinder.java:204)
                                                                                                                            	at com.android.launcher3.model.LoaderTask.run(LoaderTask.java:338)
                                                                                                                            	at android.os.Handler.handleCallback(Handler.java:873)
                                                                                                                            	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                                            	at android.os.Looper.loop(Looper.java:193)
                                                                                                                            	at android.os.HandlerThread.run(HandlerThread.java:65)

                                                                                                                            	´´´

* fix crashes when trying to customize from folders

* fix NoClassDefFound attempting to create new folder in lower apis

* fix java.lang.NoSuchMethodError: No static method beginAsyncSection(Ljava/lang/String;I)V in class Landroid/os/Trace; or its super classes (declaration of 'android.os.Trace' appears in /system/framework/framework.jar!classes2.dex) when adding widgets below Q

                                                                                                        	at com.android.launcher3.widget.LauncherAppWidgetHostView.setAppWidget(LauncherAppWidgetHostView.java:126)
                                                                                                        	at android.appwidget.AppWidgetHost.createView(AppWidgetHost.java:382)
                                                                                                        	at com.android.launcher3.widget.LauncherWidgetHolder.createViewInternal(LauncherWidgetHolder.java:447)
                                                                                                        	at com.android.launcher3.widget.LauncherWidgetHolder.createView(LauncherWi

* fix java.lang.NoSuchMethodError: No static method beginAsyncSection(Ljava/lang/String;I)V in class Landroid/os/Trace; or its super classes (declaration of 'android.os.Trace' appears in /system/framework/framework.jar!classes2.dex) when adding widgets below Q

                                                                                                        	at com.android.launcher3.widget.LauncherAppWidgetHostView.setAppWidget(LauncherAppWidgetHostView.java:126)
                                                                                                        	at android.appwidget.AppWidgetHost.createView(AppWidgetHost.java:382)
                                                                                                        	at com.android.launcher3.widget.LauncherWidgetHolder.createViewInternal(LauncherWidgetHolder.java:447)
                                                                                                        	at com.android.launcher3.widget.LauncherWidgetHolder.createView(LauncherWi

* fix                                                                                                     java.lang.NoSuchMethodError: No virtual method setSystemGestureExclusionRects(Ljava/util/List;)V in class Lcom/android/launcher3/AppWidgetResizeFrame; or its super classes (declaration of 'com.android.launcher3.AppWidgetResizeFrame' appears in /data/app/app.lawnchair.play.debug-ewPju7gaDxUbh-ipLPLIoA==/base.apk!classes6.dex)
2024-12-05 14:40:30 +08:00
MrSluffy eeb7416bfe Merge branch 'android15-release' into merge-aosp15 2024-09-14 17:29:57 +08:00
Sebastian Franco 899656a2a7 Remove event signaling logic from Launcher to the tests
Instead of throwing the event on the Launcher, now the test listens
to changes in the view tree and when the condition is meet it stops the
waiter.

Bug: 352569050
Bug: 324261526
Test: IntegrationReorderWidgetsTest
Flag: TEST_ONLY
Change-Id: I94596429cb79af6b298281bd5cd4558e919736e2
2024-08-30 22:46:45 +00:00
Sebastian Franco 224f67a046 Moving ReorderWidgetsTest to an integration test instead of E2E
Flag: TEST_ONLY
Test: IntegrationReorderWidgetsTest
Bug: 324261526
Fix: 343761044

Change-Id: I9bfe8b587e1024260ddeeb48157c3d204f2d58f2
2024-07-10 04:20:41 +00:00
SuperDragonXD 8b5a81c5e7 Reorganize colorscheme files 2024-06-26 19:10:38 +08:00
Willie Koomson 14c321de31 Fix resize frame corner radius for widgets added with button
Before this CL, the resize frame showed a mismatched corner radius
for widgets that have a non-default corner radius, when using the
add button. This is because widgets added with the button may not have
had `onLayout` called before the resize frame is set up.

This change adds a layout listener to the widget view, so that the frame
can set its corner radius once the view has been laid out.

Bug: none
Test: manual test
Flag: ACONFIG com.android.launcher3.enable_widget_tap_to_add NEXTFOOD
Change-Id: Ia9c37ae595be48e4ecab7930e17efca9a27ed05d
2024-05-02 19:55:41 +00:00
Shamali P 9f2a4fe816 Fix issue that widgets with config activity jump
This also linked to the overlap we were seeing in
bug 331816144 (as can be seen in before and after video)

Bug: N/A
Test: See videos
Flag: aconfig launcher.enable_add_app_widget_via_config_activity_v2 NEXTFOOD
Change-Id: I21717e0c4d4eab7efa1746e46d3218b8b3cee4ef
2024-04-10 14:53:46 +00:00
Fengjiang Li 9b46c463ad [1/2] Fix resize frame showing at left top corner of workspace.
Some widget will show config activity and immediately dismiss it after user dropping widget onto workspace. This lead to 2 code paths triggered around same time:

1. Drop widget to workspace and show resize frame, after state is transitiion to NORMAL, show workspace
2. Close config activity and Launcher#onActivityResult, which triggers removing dropped widget and extract bitmap, then re-inflate another pending widget and show resize frame

Due to race condition between #1 and #2, we might remove the dropped widget first in #2, then show resize frame in #1 after workspace is transitione to NORMAL, leading showing resize frame at incorrect location

Next CL will fix the slight misalignment of resize frame with widget.

Bug: 331433240
Flag: NONE
Test: manual
Change-Id: Ie02f59b370271d517ed2e91b42d665f44a86095b
2024-04-04 12:41:47 -07:00
Daniel HauckandSuperDragonXD 0390df7bfe Add options for unlimited and forced widget resize (#4170)
* Add option to make all widgets resizable.

* Split setting for unlimited size and forcing.

* Update labels and add description to settings.

* Fix build error.

---------

Co-authored-by: SuperDragonXD <70206496+SuperDragonXD@users.noreply.github.com>
2024-04-03 19:32:54 +08:00
Andy Wickham b922dccbf5 Cleanup API checks for P, Q, and R.
Test: Build with gradle
Flag: NA
Change-Id: I3ef17090741d14bebd76cf09cf3dc5ac4f11e686
2024-01-24 14:58:08 -08:00
MrSluffy 32700b0100 Merge branch 'android14-release' into 14-dev 2023-12-13 18:47:55 +08:00
Sebastian Franco 974cc94839 Moving some constants in Launcher.java to a separate file for ease of readability
Part of  go/launcher_SoR

Flag: N/A
Bug: 306465626
Test: compiling, no-op change
Change-Id: I5ea40acb2ba1ea5840021e297516a511b032a043
2023-11-07 10:12:26 -06:00
MrSluffy 19bf26dd5a Merge branch 'aosp-13' into 13-wip 2023-10-21 09:52:01 +08:00
Sunny Goyal 576f7a5e80 Removing some usage of shared prefs
Bug: 301661768
Test: Presubmit
Flag: N/A
Change-Id: I158e9a5148d2c9404ea4d2e9e239696b29dbeb20
2023-10-06 14:35:56 -07:00
Sihua Ma 324d3b0fdc Add widget layout transition when resizing
Also getting rid of part of the logic that updates the frame size in multi-window mode since multi-window is no longer supported

Test: N/A
Bug: 268553314
Flag: ENABLE_WIDGET_TRANSITION_FOR_RESIZING. OFF
Change-Id: I081b11441b562fccec7feb12cec0b28b9a0ea3a2
2023-08-30 22:41:13 +00:00
Sebastián Franco 363706d73f Revert "Remove flags ENABLE_TWO_PANEL_HOME FOLDABLE_WORKSPACE_REORDE and FOLDABLE_SINGLE_PAGE"
This reverts commit 76a1ceb5f2.

Reason for revert: Add flag back to turn it off for further testing

Bug: 270395274
Merged-In: I10b9e99734b14cbbe8d1190300493099a1f28a24
Change-Id: I10b9e99734b14cbbe8d1190300493099a1f28a24
2023-08-08 16:31:05 +00:00
Sebastian Franco 76a1ceb5f2 Remove flags ENABLE_TWO_PANEL_HOME FOLDABLE_WORKSPACE_REORDE and FOLDABLE_SINGLE_PAGE
Fix: 270392643
Fix: 270395070
Fix: 270395274
Test: atest FoldableItemsIntegrity
Change-Id: I2d7af312da8aeb070588ca94a2a256d2def65eeb
2023-06-12 18:05:22 -07:00
Sunny Goyal 6c304b157d Always insetting the widget by a minimum of 6dp
Removing default widget padding logic. Also widget padding it applied
at ShortcutAndWidgetContainer so that the widgetView always has the
correct size.

Bug: 274826296
Bug: 257589413
Test: Verified using screenshots
Flags: N/A
Change-Id: Id4b5e94db6ec7b2aa3dca87b1e9ccc831b608cac
2023-05-03 12:18:33 -07:00
Brian Isganitis fdd044e16e Expose IS_RUNNING_IN_TEST_HARNESS as static method.
This variable is now mutable, making the uppercase format misleading.
For instance, users might assume they can use this value in other
immutable properties, when they really should be accessing the latest
value every time they need it.

Context: https://source.android.com/docs/setup/contribute/code-style#follow-field-naming-conventions

Test: Manual
Bug: 271160958
Change-Id: Iaaa51d9153cb8a7d686c72e1210b1948029dcfd5
2023-03-03 00:17:33 +00:00
Sunny Goyal 669b71f5b3 Introducing CellPosMapper which allows mapping between UI position
and model position

Test: atest CellPosMapperTest
Bug: 188081026
Change-Id: If5c6b3df5ad240317bb535c675f6ead94084238e
2023-01-30 12:17:09 -08:00
Sebastian Franco 877088e6c3 Change the access of cellX/Y of CellLayoutLayoutParams to private
Bug: 188081026
Test: no op change, should compile
Test: ReorderWidgets
Change-Id: I20367974e5a4cead406e18eb66dafd4d59651b2a
Merged-In: I20367974e5a4cead406e18eb66dafd4d59651b2a
2023-01-13 18:25:10 +00:00
Sihua Ma 0593a0d3ec Created LauncherWidgetHolder as a wrapper for LauncherAppWidgetHost
The wrapper class is created for further changes that will run the wrapped host in the background.

Test: N/A
Bug: 235358918
Change-Id: I9bd6fc2749c5d4a4d3391fb75d0c3ff1e13d17bf
2022-10-26 10:57:13 -07:00
Sebastian Franco d468299c0f Moving the class LayoutParams to a file outside CellLayout
I'm moving the LayoutParams to another file to start the decoupling
of the Reorder outside of the CellLayout.

Also, I change the name from LayoutParams to LauncherLayoutParams to prevent confusion with ViewGroup.LayoutParams making it explicit that this are different LayoutParams.

Bug: 188081026
Test: atest ReorderWidget
Change-Id: I92251c5540ffcf5ece7b933e6f6c836eb825c997
2022-10-12 16:14:42 +00:00
Nebojsa Cvetkovic 59ca9d6d3b Workspace: Allow resizing any widget
Originally committed on Trebuchet: https://github.com/LineageOS/android_packages_apps_Trebuchet/commit/9814de7c9a517e667b9e7eb048b53194ff3f5f9d
2022-08-13 15:24:14 +04:30
Patryk Michalik 7767d76320 Revert commits d2f4294a & 7c618e01 2022-07-17 19:15:22 +02:00
Sunny Goyal cd89ca36b6 Fixing Launcher crash if activity restarts while resixing widget
When activity restarts, the widgetView gets onDetachFromWindow first
which inturn removes the AppWidgetResizeFrame from drawLayer while
the dispatchAttachToWindow was still in progress in DragLayer

Bug: 238416508
Test: Verified no crash after the change
Change-Id: I6359840c9fb3ae2719056845818620af19d3c94d
2022-07-13 12:22:01 -07:00
Suphon Thanakornpakapong 7c618e0146 Move drawable tokens assignment to layout inflater 2022-06-22 21:40:58 +07:00
Suphon Thanakornpakapong 11e1a2fdc8 Merge remote-tracking branch 'aosp/android12L-release' into 12.1-dev 2022-05-08 20:29:17 +07:00
Shikha Malhotra f78da1bae3 Review comments followup
These are review comments followup from ag/17399997

Bug: b/218187058
Test: manually test thet Launcher3 features work correctly
Change-Id: I9865a37c1ed663370dc28e7678994f3d961e3cd1
2022-04-12 14:33:07 +00:00
TreeHugger Robot d4df41b78f Merge "Bugfix where the widget handles appear even when you can't resize it." into sc-v2-dev 2021-10-21 20:46:37 +00:00
Sebastian Franco 4067f5d4ae Bugfix where the widget handles appear even when you can't resize it.
To fix it I added the following logic condition: if the minimum size of
the widget (`mMinVSpan` vertically) is equal to the maximum size of the
widget (`mMaxVSpan` vertically), then you can't change the size and the
handles shouldn't appear, I did this for both the horizontal handles as
well as the vertical handles.

Fix: 202004006
Change-Id: Ide05231f5712a736129ac6cb2fee358f7c70e371
Test: Manully veryfied.
2021-10-21 17:32:31 +00:00
Yogisha Dixit 7b1d25b251 Fix bug with resize frame in Launcher3.
Also updated the tests to check that the resize frame is shown.

Bug: 192655785
Test: AddWidgetTest, AddConfigWidgetTest, manual
Change-Id: Id348f39cec1bebc8ec9ea9f3068f4bda2159eac4
2021-10-20 19:03:14 +01:00
Suphon Thanakornpakapong 47a10063f0 Theme ui elements using accent color palette 2021-10-14 23:57:17 +07:00
Thales Lima 78d00adcbe launcher: create more space options
The grid doesn't have a constant space between cells anymore, so we need
new attributes for the different spaces in different situations.

Bug: 191879424
Test: checking cell size and extra space in dumpsys
Change-Id: I4b6aae5b3fea281490c00cd13d0cd3a25372f21b
2021-10-05 12:26:05 +01:00
Steven Ng 4b346108d1 Add an animation for invalid widget resizing in 2 panel UI
Test: manual
Fix: 197509872
Change-Id: Ibcfae107e7f4b3bfbc562d4a6436f4b9237db122
2021-09-20 15:33:23 +01:00