Commit Graph

49 Commits

Author SHA1 Message Date
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 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
Treehugger Robot f23a5060ee Merge "Do not enter desktop mode if the existing fullscreen task is refocused" into main 2025-06-08 19:10:57 -07:00
Toshiki Kikuchi 4e9affa253 Do not enter desktop mode if the existing fullscreen task is refocused
This CL prevents taskbar from forcefully moving the existing fullscreen
task to desktop on desktop-first display.
On desktop-first displays, we want to keep the current windowing mode
when its taskbar app icon is clicked.

Flag: com.android.window.flags.enable_desktop_first_fullscreen_refocus_bugfix
Bug: 420499923
Test: TaskbarRecentAppsControllerTest
Change-Id: I5e5c950d2e7bd25762eaddad94c57a4bf29ee800
2025-06-06 09:58:42 +09:00
Jagrut Desai b5d2f3ee7f Fix Hotseat flashing during DW to home transition
Problem: upon exiting the deesktop mode we were getting change in recents tasks which we were commiting to ui and that resulted in hotseat flashing.

Solution: since layout transition is only in use while we are in desktop windowing mode, we will only need to change icon layout bound while we are in desktop mode and not when we are exiting.

Test: Manual, Presubmit
Bug: 417696108
Bug: 415700104
Flag: EXEMPT bugfix
Change-Id: Ibcf65df49e7b48312a27d2750d3d0c6c5d392006
2025-06-02 10:30:58 -07:00
Gustav Sennton ffa5c2ad83 Don't trigger getRecentTasks() calls when waiting for an old call
TaskbarRecentAppsController#reloadRecentTasksIfNeeded() triggers a call
to fetch Recents tasks, that call is expensive as it goes through WM
Shell and the system server. If we trigger reloadRecentTasksIfNeeded()
multiple times we're queueing up multiple calls to fetch Recents tasks.

With this CL we avoid queueing up multiple calls, and instead just make
one new call when the old one finishes. That way we can only ever have
one call getRecentTasks() call triggered through
reloadRecentTasksIfNeeded() posted at any one time.

Bug: 415090968
Flag: com.android.window.flags.enable_taskbar_recent_tasks_throttle_bugfix
Test: TaskbarRecentAppsControllerTest
Change-Id: I58b66e4564af4e64837317a9de7be398395d8568
2025-05-15 20:18:21 +00:00
helencheuk d681164fe3 [Action Corner] Handle go home action
Handle go home and go back to previous screen for overview, split and full screen task

Bug: 397182595
Test: ActionCornerHandlerTest
Flag: com.android.systemui.shared.cursor_hot_corner
Change-Id: Ia928f102df6908058c02949db02a73430cea5ef1
2025-05-13 17:03:12 +00:00
Wen-Chien Wang e6816545b6 pin-shortcut: Check desktop state for the feature
This feature aims to work only for desktop mode. Add a check to
the desktop state when checking the aconfig feature flag.

Bug: 375648361
Test: EXEMPT flag update
Flag: com.android.window.flags.enable_pinning_app_with_context_menu
Change-Id: I19eb17d756f17892637bd303464748b505c89190
2025-05-09 00:31:27 +00:00
Toni Barzic 5207024240 Improve TaskbarRecentAppsController on multi-display
Fixes two issues:
1.  TaskbarRecentAppsController was reflecting tasks from the first
    DesktopTasks it found in the RecentsModel - this does not work in
    multi-display environemnt where each display may have a separate
    DesktopTask. The CL updates the logic to gather tasks from all
    available DesktopTasks.
2.  RecentsModel supported a single recent apps changed listener. In
    multi-display, each display has its own taskbar, and thus its own
    TaskbarRecentAppsController, each of which needs to listen for
    RecentsModel changes. This meant that second taskbar that registered
    a listener was clearing out the listener set by the first taskbar.

Bug: 406183146
Flag: com.android.window.flags.enable_taskbar_connected_displays
Test: On multidisplay, open apps on different displays. Taskbar reflects
      all running desktop tasks regardless of the display on which
      they're open.
Change-Id: I1dd750e5bcd58d8d90b7b859053e2616c7d18441
2025-04-17 16:32:12 -07:00
Jagrut Desai 065a5321a8 Fix Taskbar Recents Item after unlock
we simply fetch the icons at the same time we restore the previously show items.

Test: Manual
Bug: 407932962
Flag: EXEMPT bugfix
Change-Id: I83131ef034fe94583beee32aeeb3e908f07cfc6f
2025-04-08 09:01:59 -07:00
Wen-Chien Wang 9d962c8c3e pin-shortcut: Move flag to lse
Bug: 375648361
Test: EXEMPT changing flag
Flag: EXEMPT moving flag
Change-Id: I13065db6dcf42e26e87aba27f395e4345c569d6f
2025-04-01 18:29:59 +00:00
Wen-chien Wang edf603cf95 Merge "pin-shortcut: Make single recent task pinnable from taskbar" into main 2025-03-31 14:12:43 -07:00
Wen-Chien Wang 0f0df91430 pin-shortcut: Make single recent task pinnable from taskbar
With this change, we can now using long-press menu to pin a single
task to the taskbar.

Note that some of the code in this cl is filtered by the flag.

Bug: 375648361
Test: Adding in the next cl
Flag: com.android.launcher3.enable_pinning_app_with_context_menu
Change-Id: Id0f2a9dce03a6c94da2cf8bd0deffd4c48656a7a
2025-03-26 00:49:27 +00:00
Jagrut Desai 64d448a8db Fix Taskbar Flicker with Recents or Running Apps Present
Test: Manual, Presubmit
Bug: 404772481
Flag: EXEMPT bugfix
Change-Id: If3b87474e6e85fabf24a42ac2a3e4ac6a19a4358
2025-03-25 14:16:12 -07:00
Ahmed Fakhry b6ecf5889e Remove all external usages of GroupTask.task1/2 from Launcher3
See go/refactor-group-task for details. This CL removes all the usages
of `task1` and `task2` from `GroupTask` in Launcher3. Follow-up CLs will
remove it from NexusLauncher and remove the fields altogether.

Bug: 388593902
Test: m
Flag: EXEMPT pure refactor with no behavior change.
Change-Id: I902c8135b3a0aae95acf25267b3bcbf286bd4e7d
2025-01-31 17:14:44 +00:00
Treehugger Robot b22158206b Merge "Introduce SingleTask and SplitTask" into main 2025-01-24 02:59:37 -08:00
Ahmed Fakhry f87e44376b Introduce SingleTask and SplitTask
See go/refactor-group-task for details. This CL introduces `SingleTask`
and `SplitTask` and makes `GroupTask` abstract.

Bug: 388593902
Test: m
Flag: EXEMPT pure refactor with no behavior change.
Change-Id: I96d0eb0600420ce5cb2fff30ed9d766224b6961e
2025-01-23 23:48:01 +00:00
Treehugger Robot 86864f95c3 Merge "AllApps tray icon tap: use showDesktopApp() for existing Desktop tasks" into main 2025-01-23 03:34:55 -08:00
Gustav Sennton 1427068342 AllApps tray icon tap: use showDesktopApp() for existing Desktop tasks
When tapping an icon in the AllApps tray, before this CL, we would use
the WM Shell API startLaunchIntentTransition() to launch a task for that
app icon. However, this would break the window limit logic since in WM
Shell (startLaunchIntentTransition()) we think we're launching a new
task, when in fact we're just moving an existing one to the front.
With this CL we instead reuse the showDesktopApp() API whenever the app
we're trying to launch has an already visible / minimized Desktop task.

Bug: 391365151
Test: launch visible Desktop app from AllApps - doesn't overtrigger
window limit
Flag: com.android.window.flags.enable_desktop_app_launch_transitions_bugfix

Change-Id: Ia3638012226fe28c853ec6cfd0523a8fb23b8961
2025-01-23 00:46:08 -08:00
Toni Barzic f817372651 Show desktop tasks when taskbar is pinned on home
Updates taskbar and KQS to show (running) desktop tasks when taskbar is
shown on the home screen - adds `shouldShowDesktopTasksInTaskbar` method
to TaskbarDesktopModeController to be used instead of
`areDesktopTasksVisible*()` to determine whether to show desktop tasks
in the taskbar. The method, in addition to desktop tasks visibility,
also considers whether taskbar should be shown on the home screen, and
whether current launcher state is home.

The launcher state is fetched from `TaskbarStashController`, which
already keeps track of this state. This is likely not ideal, but can be
removed in the long term - see http://b/390665752.

Furthermore, updates ReventsModel login not to always filter out desktop
tasks with no non-minimized tasks (which is currently expected behavior
in overview) in `getTasks()`. The filtering is now done by the filter
passed to `getTasks()` method, instead of when processing tasks in the
background. The filter used by default is updated to filter out such
desktop tasks, but callsites from `KeyboardQuickSwitchController` and
`TaskbarRecentAppsController` are updated to use an empty filter, so
they can display desktop tasks when they're all minimized.

Bug: 376711722
Bug: 390665160
Test: Manual on desktop device - verify that taskbar and KQS when shown
on home screen display desktop tasks, including the case all tasks are
minimized.
Flag: com.android.window.flags.enter_desktop_by_default_on_freeform_displays

Change-Id: Iabc22e20bf64aa9a826b4a5952f1edc6ea639cdc
2025-01-22 22:36:02 +00:00
Ahmed Fakhry 26a43abbe2 Remove some usages of GroupTask.task1
See go/refactor-group-task for details. This is another incremental
change towards deprecating `GroupTask.task1`.

Bug: 388593902
Test: m
Flag: EXEMPT pure refactor with no behavior change.
Change-Id: Ib9b38268374277f485c6856a012b5b7f02e37055
2025-01-17 17:47:26 +00:00
Saumya Prakash aabcfa27ae Avoid per task app icons in Taskbar for desktop mode
Until Taskbar multi instance support was in place, Taskbar would show
multiple icons for different instances of the same app in desktop mode.
Now this is no longer needed as taskbar has multi instance support, so
now there is only one icon per instance of an app of the same user.

Fix: 382589460
Test: Started several Chrome windows -> Taskbar has 1 icon for chrome
Flag: com.android.launcher3.enable_multi_instance_menu_taskbar
Change-Id: I2df4327dcdc9d221164055ebc33ff508273e7ef9
2025-01-13 22:37:25 +00:00
Tony Wickham db64e1b3d1 Factor in userId for updateHotseatItemsFromRunningTasks
Test: onRecentTasksChanged_inDesktopMode_sameHotseatPackage_differentUser_isInShownTasks
Test: Pin personal Chrome, open work Chrome in desktop mode; ensure a
new work icon is created in the running apps section
Flag: com.android.window.flags.enable_desktop_windowing_taskbar_running_apps
Bug: 376818660

Change-Id: Ie5cf3ab8e839456e6bd774de8a4398835e790019
2024-12-04 00:31:36 +00:00
Gustav Sennton da2c2c0f7f Handle Desktop app launches from Taskbar/AllApps icon clicks.
- Provide both launch and minimize animations from
  DesktopAppLaunchTransition
- Add support to TaskbarRecentAppsController to check whether an app is
  visible vs. minimized vs. not showing at all in Desktop Mode
- Use DesktopAppLaunchTransition when clicking a Taskbar/AllApps app
  icon (when in Desktop Mode and the app is not visible) to animate the
  app launch
- The animation / transition is passed to Shell through ActivityOptions

Note: this CL does not add animations for launching managed/work
profile apps. That will be handled in b/376819104.

Test: launch apps in Desktop from Taskbar/AllApps
Bug: 327428659
Flag: com.android.window.flags.enable_desktop_app_launch_transitions
Change-Id: I44be96b9c53718b2082d2f630e1921356785fc4b
2024-11-07 23:06:24 +00:00
Gustav Sennton 461caa7c5f Support Desktop unminimize animations, and move app-state logic
- Support Desktop unminimize animations through
    1. keyboard alt-tab shortcut
    2. taskbar hotseat icon click (TaskItemInfo)
    3. taskbar running-app icon click (GroupTask)
- move taskbar running-app state logic from TaskbarViewController to
  TaskbarRecentAppsController.

Test: manual - ensure the transitions above cause unminimize animations
Bug: 369966334
Flag: com.android.window.flags.enable_desktop_app_launch_alttab_transitions

Change-Id: I20322bdf58bc69cff360bf26e533e0732d5297b9
2024-11-05 13:39:46 +00:00
Jordan Silva f4a21b7e5c Fix RecentsView crash when DesktopTask has only 1 task and it is in split mode
This CL fixes a crash happening when no other task is available in Desktop Windowing (DW), and the only task in DW is selected to be part of the pair (split mode). The crash is happening because of the following logic:

- applyLoadPlan skips the staged tasks (for split) from the groupTask when adding the TaskViews to RecentsView.
- If a groupTask has multiple tasks, and one of the tasks is staged, groupTask will be treated as a single task and applyLoadPlan uses the other task (not staged) to create a single TaskView in Overview.
- DesktopTasks returns true for hasMultipleTasks, even when only 1 task is in DW mode. This causes a crash when the only task available in DW is staged for split.

This fix will skip DesktopTaskView creation when split selection is active. In addition, it updates DesktopTask to report multiple tasks only when more than 1 task is its task list.

Fix: 372357270
Fix: 372375086
Fix: 372864249
Flag: EXEMPT bugfix
Test: Manual. Instructions on bug report.
Change-Id: I95e32252a5cac4f6b99296422703d69d129a5a47
2024-10-16 17:34:08 +01:00
Alina Zaidi 8c0dc4c655 [dev_option] Move DestopModeFlags out of android.windows.flags
This is to maintain separation of non-generated files from generated flag values.

Test: Current tests pass
Flag: EXEMPT refactoring
Bug: 370777204
Change-Id: If9ca76cbf084da7a37241216f41319610adc52b0
2024-10-08 17:51:23 +00:00
Alina Zaidi e05f1fc2dd [dev_option] Use DesktopModeFlags from core instead of Shell
Test: Current tests pass
Bug: 368055148
Flag: EXEMPT refactoring
Change-Id: I9d88ab95c168d970de488e7d098e060fcf8013e4
2024-09-19 10:04:50 +00:00
Schneider Victor-Tulias 2b46c945a7 Move DesktopVisibilityController to TouchInteractionService
Moved DesktopVisibilityController to TIS for 3P launcher support.

Flag: EXEMPT bug fix
Fixes: 338063030
Fixes: 357859025
Test: Launched overview and resumed desktop task from desktop mode on 1P and 3P launchers
Change-Id: I64e99a32ed13bcb6e4a81a18c29df2643373dc35
2024-09-11 09:56:35 -07:00
Saumya Prakash eb950c1f44 Disable split screen option in app menu in Desktop Mode
The split screen app shortcut is not intended to work in Desktop Mode.
This change removes it from Taskbar and all apps in this mode to avoid
a crash.

Fix: 346333758
Test: Launch the app menu for different apps in Desktop mode and in
normal mode. Check that the split option only shows up in normal mode.
Flag: EXEMPT bugfix

Change-Id: I6e2535b41a490ad3eb5c0ebd924c49eaf5028669
2024-08-13 22:22:19 +00:00
Alina Zaidi a9a5ecf3dc [dev_option][More flags 4/n] Update all usages of Taskbar-show running
apps flag to use DesktopModeFlags.

Test: Current tests pass
Bug: 348193756
Flag: com.android.window.flags.show_desktop_windowing_dev_option
Change-Id: Id63de7c9630fcc5ab2185829b42883e51774cfcf
2024-07-31 15:34:46 +00:00
Alina Zaidi 00614eae0e Use DesktopModeStatus#canEnterDesktopMode instead of just Flag check.
Test: Existing tests pass
Bug: 349544589
Flag: EXEMPT minor refactoring
Change-Id: Idf572d48d35b8eeedd7fd1b8c608834d27a818e7
2024-07-31 10:47:16 +00:00
Tony Wickham bbfa9fc181 Only register RecentTasksChangedListener if flag is enabled
Also unregister it if the feature becomes disabled (currently
this is only done in tests but in the future there will be a
user setting as well).

Added tests to verify getTasks() is not called while both
canShowRunningApps and canShowRecentApps are false.

Bug: 354087794
Test: TaskbarRecentAppsControllerTest
Flag: com.android.launcher3.enable_recents_in_taskbar
Flag: com.android.window.flags.enable_desktop_windowing_taskbar_running_apps
Change-Id: I3123501e7584ad7f877e13294454556501d2dbc8
2024-07-23 23:24:10 +00:00
Alina Zaidi 3835f93237 [Dev options][DW flag] Update all usage of enable_desktop_windowing_mode flag to use DesktopModeFlags
Test: Current tests pass
Bug: 348193756
Flag: com.android.window.flags.show_desktop_windowing_dev_option
Change-Id: I96107f7c2964ee8261ad0a161163491d6f7d4d39
2024-07-22 20:33:02 +00:00
Gustav Sennton f3108c59ed Taskbar running apps: show one icon per task + tap opens that task
Before this CL we would show only one Taskbar icon per app, making it
impossible (through the taskbar) to switch between several windows of
the same app.
With this CL we add one icon per task instead, making it possible to
bring each task to the front individually.

Flag: com.android.window.flags.enable_desktop_windowing_taskbar_running_apps
Bug: 351118893
Bug: 349790805
Bug: 351156858
Test: Started several Chrome windows -> taskbar has one icon per window

Change-Id: Ia692977effceb9ce339906bf6ca24d73e19d8769
2024-07-09 14:48:04 +00:00
Treehugger Robot a00c81c173 Merge "Change thumbnail/icon to get the image rather than updating it" into main 2024-07-04 17:13:37 +00:00
Uwais Ashraf 551927c6d3 Change thumbnail/icon to get the image rather than updating it
Flag: EXEMPT no-op refactor
Bug: 334826842
Test: existing screenshot tests
Test: Manual - checked icon loading
Change-Id: Ie1da708f911ba569d6464f338dc4efac92420268
2024-07-04 12:18:56 +00:00
Tony Wickham 7829a1ced2 Only commitRunningAppsToUI if shownTasks changed
- Add GroupTask and DesktopTask equals() (with tests)
- Add tests to verify multiple onRecentTasksChanged
  doesn't commitRunningAppsToUI if there's no change
- Add tests to verify commitRunningAppsToUI is still
  called if minimized or running apps set changes

Bug: 348802109
Bug: 348787176
Test: TaskbarRecentAppsControllerTest
Test: GroupTaskTest
Test: log TaskbarView#onMeasure() locally, ensure it is called
much less despite noisy onRecentTasksChanged callbacks
Flag: com.android.window.flags.enable_desktop_windowing_taskbar_running_apps

Change-Id: I3efff7f4492272f88aa2bdbd7cc45bd2bf8156f6
2024-06-28 21:54:37 +00:00
Tony Wickham c5995c8f6d Load and draw Recent/Running tasks that aren't in Hotseat
- Re-support GroupTask as a tag on TaskbarView BubbleTextViews
- Can tap to launch (startActivityFromRecents) or drag and drop
- Move divider when enable_recents_in_taskbar is true

Behavior:
- While in Desktop mode, all open tasks show up in TaskbarView,
  either in the Hotseat section or the Running apps section
  past the divider. Each one also has a running line indicator.
- While in Fullscreen mode, up to 2 Recent apps that are not
  part of Hotseat will be added to the right of the divider.

Flag: com.android.launcher3.enable_recents_in_taskbar
Test: TaskbarRecentAppsControllerTest
Bug: 315354060
Change-Id: I2e2870cca434b51f276a701860edb32069109159
2024-06-19 00:27:30 +00:00
Tony Wickham 7c7c90528d Maintain Running Tasks order in Desktop mode
Fixes: 345034545
Test: TaskbarRecentAppsControllerTest
Flag: com.android.launcher3.enable_recents_in_taskbar
Change-Id: I4ab856c5293625c5279d4713450e5ea2d3b0ed85
2024-06-19 00:27:30 +00:00
Tony Wickham 2021727f1e Change running apps section to use GroupTask instead of AppInfo
- No longer bind All Apps to TaskbarRecentsController, and register
  RecentsModel.RecentTasksChangedListener instead
- The source of truth for "running tasks" in Desktop mode is the
  DesktopTask#tasks list itself, instead of
  RecentsModel.RunningTasksListener (which is no longer used)
- Added TaskInfo.TaskKey#isVisible to distinguish minimized running apps
- Next CL will hook up the UI for Recent/Running tasks that are
  not part of the Hotseat.

Flag: com.android.launcher3.enable_recents_in_taskbar
Test: TaskbarRecentAppsControllerTest
Fixes: 335398876
Bug: 315354060
Change-Id: I1313f97a791c5c0c1db7443a5d4f1d5bc761981f
2024-06-19 00:27:30 +00:00
Jagrut Desai 3cddb5817d Util classes for the Taskbar Customization Framework
Test: Presubmit
Bug: 341146605
Flag: NONE Taskbar Customization
Change-Id: Ice9d2e6db2754ba75a1253da45dd28aa63cad58f
2024-06-13 11:46:29 -07:00
Tony Wickham a2b510dc23 Move Desktop running apps support into TaskbarRecentAppsController
- Merged DesktopTaskbarRunningAppsController up into
  TaskbarRecentAppsController, which is now initialized directly
- The old TaskbarRecentAppsController was effectively a no-op
  that was always overridden, so merging the one subclass up makes
  things simpler (especially for the follow up CLs which will add
  support for switching between Running and Recent tasks using
  the same underlying data).

Flag: com.android.launcher3.enable_recents_in_taskbar
Test: TaskbarRecentAppsControllerTest
Bug: 315354060
Change-Id: I8411fb832e5dd3d76201d2694dec0b11bd70bbf9
2024-06-11 00:18:23 +00:00