Commit Graph

185 Commits

Author SHA1 Message Date
Brian Isganitis dfdab91337 Fix layout transition crash for phone with QSB inline.
Phone can now have QSB inline when in landscape. Need to adjust layout
transition initialization to reflect that.

Flag: com.android.window.flags.enable_taskbar_recents_layout_transition
Bug: 343521765
Test: go/testedequals
Change-Id: I9f0b61108170188da1a37b99c9e1411da6b71946
2025-03-10 15:21:13 -04:00
Treehugger Robot 57cab7794a Merge "Simplifying some view iteration methods" into main 2025-03-04 18:42:06 -08:00
Brian Isganitis 75d443ffdb Initial overflow compatibility with layout transition.
Also implements RTL support for overflow.

Flag: com.android.window.flags.enable_taskbar_recents_layout_transition
Bug: 343521765
Test: go/testedequals
Change-Id: I34983821a2a1a80793dc6d811d42cfeafe274ef4
2025-03-04 12:05:58 -08:00
Sunny Goyal 476d926972 Simplifying some view iteration methods
Bug: 393703968
Flag: EXEMPT refactor
Test: Presubmit
Change-Id: Ieffa3a66fbf8595d542995c348df578a3aec9083
2025-03-04 10:39:55 -08:00
Brian Isganitis 42c58e39fd Migrate layout transition flag to DesktopModeFlag version.
Flag: com.android.window.flags.enable_taskbar_recents_layout_transition
Bug: 343521765
Test: go/testedequals
Change-Id: I175e428240bc52689efe0f6e4457620ac2efdbb5
2025-03-04 11:30:23 -05:00
Brian Isganitis 8127148e02 Exclude All Apps divider in desktop mode.
Flag: com.android.launcher3.taskbar_recents_layout_transition
Bug: 315354060
Test: go/testedequals
Change-Id: Ic9cf42ad9a81357fe7452ed576663bedb54fbcf7
2025-03-03 14:42:16 -05:00
Sunny Goyal 39063bf167 Merging some notification dots implementation
Bug: 393703968
Flag: EXEMPT refactor
Test: Presubmit
Change-Id: Ie02311afba85f06fbafd265a5015cd23bd356a36
2025-02-27 08:50:26 -08:00
Jagrut Desai 8b2e5eff9b Desktop Mode Taskbar Recreate Animation
This Cl includes
       - addition of entry/exit callback methods in DesktopVisibilityController.
       - taskbar manager now listens to desktop mode changes.
       - TaskbarBackrgroundRedererer can now individually animation backgrounds for transient and persistent taskbars
       - new channel for taskbar icon alpha added to TaskbarViewController
       - new animated float to handle background alpha while we are recreating taskbar with animation.

Solution:

we use the callabck we get from DekstopVisibilty for entry/exit to first change logic of when we are considered inDesktopMode. Upon entry/exit we notify display controller for info change.
we also at notify taskbar manager who is now a listener to the desktop mode change and start the recreate process. TaskbarManager first animates existing taskbar out of user view and then follows the original recreate flow.

Test: Presubmit
Bug: 343882478
Flag: com.android.window.flags.enable_desktop_windowing_mode
Change-Id: Ib827564cacd194f499e7d9b1965e2bb13e3548ab
2025-02-24 11:59:53 -08:00
Treehugger Robot 634c3a0f8f Merge changes I8af39b58,I9a3e8ee2 into main
* changes:
  Finally remove `task1` and `task2` from `GroupTask`
  Remove `GroupTask.mSplitBounds`
2025-01-31 11:51:02 -08:00
Treehugger Robot 340720e8a7 Merge "Remove all external usages of GroupTask.task1/2 from Launcher3" into main 2025-01-31 11:42:55 -08:00
Ahmed Fakhry 129a3a0097 Finally remove task1 and task2 from GroupTask
See go/refactor-group-task for details. This is the final CL
in this refactor, where `task1` and `task2` are finally removed,
and `DesktopTask` is allowed to have empty tasks.

Bug: 388593902
Test: m
Flag: EXEMPT pure refactor with no behavior change.
Change-Id: I8af39b58138f11030981311efc2e95a77cef125b
2025-01-31 17:14:46 +00: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
Jagrut Desai defdc6c2d8 Remove Forced Taskbar Hidden accessibility announcement and forced accessibility focus
This cl also removes forced hidden annoucement and focus for Bubble Bar since they are annouced together.
we are keeping the tasksbar show annoucement and focus since it is only way to notify user of taskbar being shown on screen until we figure out proper solution with talkback team.

Test: Manual, Presubmit
Bug: 383928453
Flag: EXEMPT bugfix
Change-Id: I2c32ea393da2509af49e2fce795759a6903b0451
2025-01-24 09:20:07 -08:00
Fengjiang Li 90e83779f2 [Leak] Clear all of TaskbarView's FolderIcons' listeners upon activity onDestroy
Fix: 390200556
Test: manual
Flag: NONE - released code
Change-Id: I4f6fd2fb0b263169bd5e59e90b321cedfc22f4de
2025-01-15 14:58:14 -08:00
Sunny Goyal 5bf0742fc5 Fixing prediction ring color not getting updated if the icon changes
while the slot animation is running

Slot animation is only trigerred through prediction update and it sets
final ring color at that point as part of the animation. If the icon
and the color change due to some other reason (like high-res icon or
a package-update), that color is overriden by the ongoing slot animation.

Bug: 381897614
Test: Verified manually by slowing down animation
Flag: EXEMPT bugfix
Change-Id: Ia3b86330afdb91ba6ff3366e3c8057bd7ec34e5d
2024-12-27 02:54:21 -08:00
mpodolian 3e419ebbf1 Remove usage of the enableBubbleBarInPersistentTaskBar flag.
Remove and merge the usage of the enableBubbleBarInPersistentTaskBar
flag to the enableBubbleBar flag.

Bug: 383181643
Flag: com.android.wm.shell.enable_bubble_bar
Test: NONE - removed and merged flag usage.
Change-Id: I4f131e1ddf8367425b91c8fb597857ee222b75d8
2024-12-10 15:10:49 -08:00
Brian Isganitis 9c0552e09d Merge changes from topic "taskbar-view-recents-changes" into main
* changes:
  Move recents divider if hotseat is set after recents.
  Animate out/in the correct task view when recents change.
  Implement initial LayoutTransition for Taskbar recents.
2024-12-10 02:18:53 +00:00
Brian Isganitis c7f6cd6062 Move recents divider if hotseat is set after recents.
Fixes a bug where updateItems is first called with recents and then with hotseat. This causes the Taskbar to first be All Apps, Divider, and then Recents. The layout transition path assumes though that the Divider after All Apps is not for recents in this case, which is wrong. Due to this assumption, it skips over the divider and then adds the hotseat items after it (should be added before). Added a test for this case.

Flag: com.android.launcher3.taskbar_recents_layout_transition
Bug: 343521765
Test: go/testedequals
Change-Id: Ia690c71fe482709e35ab302a7b497bf547eb4478
2024-12-09 15:35:43 -05:00
Brian Isganitis 3c24c421f6 Animate out/in the correct task view when recents change.
Flag: com.android.launcher3.taskbar_recents_layout_transition
Bug: 343521765
Test: go/testedequals
Change-Id: I6c7708ed9f03eff8469b5f2e75ce00e545b03f54
2024-12-09 15:35:43 -05:00
Brian Isganitis 8e2b850df7 Implement initial LayoutTransition for Taskbar recents.
The animations mostly match the spec, though the recents indicators scale/fade with icon currently.

The change transitions need to incorporate translateX since that changes based on the number of icons in Taskbar. We need the translateX for pinning update to happen before TaskbarView lays out its children so that the animator computes the correct start and end values.

Flag: com.android.launcher3.taskbar_recents_layout_transition
Bug: 343521765
Test: go/testedequals
Change-Id: I13aa49abf80ddc09fab890f78bde924a8f7f1d6e
2024-12-09 15:35:43 -05:00
Toni Barzic 7bea1821d4 Adapt TaskbarOverflow tests to check items added overflow view
Adds a step to verify that TaskbarOverflowView items get set to the list
of the least recent tasks. Adds test cases for an edge case where
taskbar hits max number of items event without recent tasks
(b/379774843).
Has a fix for a further edge case where taskbar overflow view could be
created with a single item (in which case we can just show that item
directly).

Bug: 379774843
Flag: com.android.launcher3.taskbar_overflow
Test: atest TaskbarOverflowTest

Change-Id: I004676da3e17f26b8110d14d39589c84a9f384d8
2024-12-06 19:39:47 +00:00
Treehugger Robot d7b3369036 Merge "Ignore events that occur between app icons on the taskbar" into main 2024-11-27 20:22:17 +00:00
Treehugger Robot a8f25d26ad Merge "[Launcher Memory Leak] Avoid leaking Folder/FolderIcon when removing FolderIcon from TaskbarView" into main 2024-11-26 20:37:21 +00:00
Fengjiang Li 3daaad8498 [Launcher Memory Leak] Avoid leaking Folder/FolderIcon when removing FolderIcon from TaskbarView
Fix: 380868830
Flag: NONE - released code
Test: Presubmit
Change-Id: I57c179384df06015a7e95a173c399cfcda236e46
2024-11-25 11:30:53 -08:00
Brian Isganitis 6c0cd2278d Do not pre-add All Apps icon in phone mode.
Flag: com.android.launcher3.taskbar_recents_layout_transition
Bug: 343521765
Test: go/testedequals
Change-Id: Ie152344613cf982183c4bb72b8dde138f4f74e37
2024-11-21 23:38:00 +00:00
Brian Isganitis f04ae6b09f Fix LayoutTransition All Apps divider logic for RTL.
We were checking the wrong index (off by one), leading to a crash if the divider is already in the Taskbar at the correct index. However, we do need to add it after the expected index if the divider isn't there, otherwise it will push the icon that is at that position to the right of the divider (it should be to the left).

Flag: com.android.launcher3.taskbar_recents_layout_transition
Bug: 343521765
Bug: 368522274
Test: go/testedequals
Change-Id: I0263f704728286b53da5b45828784b20aaae31ce
2024-11-21 23:38:00 +00:00
Artsiom Mitrokhin 7205b24938 Ignore events that occur between app icons on the taskbar
Bug: 297325541
Flag: com.android.launcher3.show_taskbar_pinning_popup_from_anywhere
Test: manual, flip the flag, long-click between taskbar items
Change-Id: If2ee00f31fcd1788bac2c2c0cd78ba1eada86115
2024-11-21 16:38:32 -05:00
Brian Isganitis c87f691e04 Prepare for LayoutTransition with RTL support.
Only remove divider when it needs to be removed or moved between All Apps and recents locations. Keep All Apps and QSB in Taskbar at all times. LayoutTransition does not work if views are being removed and then immediately readded (what current code branch does).
Overflow is not supported yet with the LayoutTransition flag.

Test: go/tested-equals
Flag: com.android.launcher3.taskbar_recents_layout_transition
Bug: 368522274, 343521765
Change-Id: I9ae1d7c52e853106cdf86329be6f221213e7cb86
2024-11-21 12:24:13 -05:00
Brian Isganitis 199f860b70 Split up hotseat and recents into two methods.
To support RTL with recents, will need to support calling updateRecents before updateHotseatItems. Splitting into two methods makes this doable.

Test: go/testedequals
Flag: EXEMPT refactor
Bug: 343521765, 368522274
Change-Id: I8756ea23fff1606ef4ab9f72d18dd4b21f135b25
2024-11-21 12:24:13 -05:00
Brian Isganitis 1782af7b6e Filter out unsupported items immediately when updating Taskbar.
Fixes an issue where hotseatItems may not reflect the number of hotseat views in Taskbar. Entries in the array can be null (e.g. no predictions but there is space in the hotseat for them). If these are filtered out immediately, hotseatItems.length will correspond to the number of hotseat views.

Test: go/testedequals
Flag: EXEMPT bugfix
Fix: 379704910
Change-Id: I375d8152fccb6df5a9b783842ecf5dcedf6894c1
2024-11-21 12:24:11 -05:00
Treehugger Robot 0fb50e85d5 Merge "Handle edge case where overflow icon is overflowing" into main 2024-11-21 00:18:57 +00:00
Toni Barzic dfed7c8338 Handle edge case where overflow icon is overflowing
In certain situations, space in taskbar may be restricted so even the
overflow icon for running apps is technically overflowing available
space (i.e. not fully within intended margins). In such cases the
overflow icon was not rendered, as the size of the overflown icons was
larger than the number of running app icons, so the list of icons for
overflow icon was never fully initialized.
Handle this case by capping the number of items to add to overflow icon
to the number of available running apps.

Bug: 379774843
Test: Enable three button navigation, increase the display scaling (to
effectively reduce available space), and enter desktop session in
portrait orientation. Verify the taskbar overflow icon shows up.
Flag: com.android.launcher3.taskbar_overflow

Change-Id: I06371637d1b01e99eaf30aec98ae0920aa248652
2024-11-20 01:53:31 +00:00
Toni Barzic 7a0191e753 Add unit tests for taskbar overflow
The tests verify that number of icons in the task bar does not go beyond
the intended max number, that the taskbar remains centered as it hits
max number of icons, and maintains a minimal margin to the display
edges.
Also, has a test that the max naumber of icons and the taskbar margins
adapt as bubble bar visibility chages.

Adds a TestRule to mock the recents model in the taskbar window sandbox.
The mocked recents model is used to add fake running app icons to the
taskbar.

Bug: 368119679
Test: atest TaskbarOverflowTest
Flag: EXEMPT test only

Change-Id: I8d033c3e95d7c0a4b139502cd7d70882482117c0
2024-11-20 01:48:54 +00:00
Toni Barzic 28ebd1bacd Account for bubble bar bounds for taskbar overflow
When caculating number of icons to show in taskbar, account for bubble
bar size (the max size when in collapsed state) when bubble bar has
bubbles (even if the bubble bar is stashed). Note that the bubble bar
visibility may change, so max number of icons in the taskbar may change
during the taskbar view lieftime. TaskbarViewController already had a
method called when the bubble bar visibility changed - adapt it to also
reclaculate max number of icons to show in the taskbar, and update the
list of icons shown in the UI if necessary (if the change in the bubble
bar visibility would also cause a change in number of icons shown in the
taskbar).

Bug: 368119679
Test: Launch enough apps for taskbar to enter overflow, open an app that
supports bubbles, and trigger 2 or more bubbles so bubble bar shows up.
Verify that the buble bar does not overlap with taskbar bounds, both
in transient and persistent taskbar. Remove bubbles, and verify the
taskbar bounds expand, allowing more icons to be shown.
Flag: com.android.launcher3.taskbar_overflow

Change-Id: Ifed4e5e5dd64df5256090f5ba55f24203c09e839
2024-11-12 18:40:40 +00:00
Treehugger Robot 423178c71e Merge "Match taskbar edge padding to nav button end insets" into main 2024-10-26 03:19:14 +00:00
Toni Barzic 20e420ca40 Match taskbar edge padding to nav button end insets
When calculating max number of items to show in a taskbar with overflow,
reserve space for taskbar end/start margins that matches inline nav
buttons end spacing.

Bug: 368119679
Test: None
Flag: com.android.launcher3.taskbar_overflow
Change-Id: I1205663ed4455ae1e7807f8d4edf5aaf2beba7d4
2024-10-25 20:49:04 +00:00
Treehugger Robot 1e4f42ff7f Merge "Account for all apps offset during taskbar layout" into main 2024-10-24 00:10:08 +00:00
Toni Barzic a5b6c155b6 Update taskbar overflow button
Creates a new view for the taskbar overflow button that draws up to 4
recent item previews. The items are stacked on top of each other in
counter clockwise order, with overlapping bounds, recent items closer
to the top. The item icons have a 2 dip ring around them, of the taskbar
background color.

Adjusts logic to calculate which items become part of the overflow
button, so more recent items get shown in the taskbar.

Initial consideration was to usse FolderIcon to represent the overflow
button, but decided against it because:
*    FolderIcon is fairly entangled with the associated folder view
*    item information uses different data structure (ItemInfo) than
     recent items (GroupTasks)
*    item preview layout within the main icon is similar, but
     sufficiently different that using clipped folder layout rules felt
     like hacking around assumptions made for folder icon UI

Bug: 368119679
Test: Keep opening apps until the task bar enters overflow - verify that
overview button shows up, and contains least recent task
representations. Keep adding items, then closing windows, and verify
the icon gets updated accordingly. Done in landscape and portrait, and
ltr and rtl layout.
Flag: com.android.launcher3.taskbar_overflow

Change-Id: I2824cb0db1f7516ebd74361ce00fb8887857325d
2024-10-23 17:05:58 +00:00
Mykola Podolian 164b832ec4 Revert "Made the taskbar touchable during animation to home."
This reverts commit d89732ef85.

Reason for revert: b/374080485
Flag: NONE
Change-Id: I56236f539957efaaa4caa30a4b887d017037709f
2024-10-21 17:36:49 -07:00
Toni Barzic 9a5941ab91 Account for all apps offset during taskbar layout
When laying out its contents, TaskBarView generally lays the icons so
they get centered in the task bar - this is done by calculating the
total size of all icons during layout (this will generally be transient
taskbar icon sizes), and substracting extra margins that get removed
from the divider view. After initial layout, `TaskbarViewController`
adjusts the icon view positions to match expected icon sizes (it
offsets icons horizontally reducing margins between icons to match
intended icon sizes for the taskbar type). Additionally,
`TaskbarViewController` translates all apps button container - this
transformation is asymetric, and causes the task bar contents to become
off-center. To account for this, update taskbar layout to reduce the
total icon size used for centering icons by the amount all apps button
is offset. This makes the taskbar off-center after initial layout, but
by the amount by which all apps button is eventually offset (resulting
in centered taskbar content).

This alone worked for left-to-right UI direction, but not right-to-left.
To fix this, correct the reference point from which
TaskBarViewController offsets icon positions. The offset used to be
calculated by distance of an icon index from half of the icon count -
instead offset needs to be calculated relative to mid-index.
For example, icon at index i needs to be offset by
(mid_index - i) * difference_in_icon_size: ((n-1) / 2 - i) * diff).
Code used to work for LTR UI layout because the list of icons contained
invisible qsb view, which incresed both n and indices by 1, so
(n' / 2 - i') * diff_in_icon_size worked fine, as it evaluated to
((n + 1) / 2 - i - 1) * diff = ((n - 1) / - i) * diff

Bug: 372567501
Test: Verify that taskbar icons are centered when it needs to be, both
with ltr and rtl language UI.
Flag: EXEMPT bugfix

Change-Id: Ic06873cc225a4361d9140d72c055db23f446a1ad
2024-10-21 20:49:05 +00:00
Toni Barzic 6957a037fe Make mAllAppsButtonContainer not Nullable
Bug: None
Test: None
Flag: EXEMPT cleanup
Change-Id: Iebf2eff8e9657e5960375f80a0f5bc4d46dcead3
2024-10-18 17:14:01 +00:00
Artsiom Mitrokhin a182675128 Merge "Open taskbar pinning popup view from anywhere" into main 2024-10-18 16:25:15 +00:00
Artsiom Mitrokhin ab7220c342 Open taskbar pinning popup view from anywhere
This CL handles both long-press and right-click events anywhere on
pinned taskbar and opens `TaskbarDividerPopupView` correctly
positioning it above the event coordinates.

Bug: 297325541
Flag: com.android.launcher3.show_taskbar_pinning_popup_from_anywhere
Test: manual for now, flip the flag, long-click or right-click
      on empty space on the pinned taskbar
Change-Id: I1849db14f65bf9478ed9f4fd39f95d08987baf8d
2024-10-17 15:00:40 -04:00
Treehugger Robot 3cac51e141 Merge "Fix RecentsView crash when DesktopTask has only 1 task and it is in split mode" into main 2024-10-17 01:14:38 +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
Mykola Podolian 2eea74b623 Merge "Made the taskbar touchable during animation to home." into main 2024-10-15 20:29:05 +00:00
mpodolian d89732ef85 Made the taskbar touchable during animation to home.
Enabled taskbar touch processing while animating to home. Also excluded
quick search bar from touch region, so it is not interactable during the
animation & removed corresponding TODO from TaskbarView.

Fixes: 368419997
Test: Manual. Enable gesture navigation. Open any application. Swipe up
to go to the launcher home screen. Click any taskbar icon - the
corresponding application will open. If clicking on Quick search,
launcher search will be opened. Video:
http://recall/-/gx8ASgewUeUS3QYohfrd1J/g6UWhF9dQZq3QsFyH0EwtK
Perform the same test for buttons navigation mode. Video:
http://recall/-/gx8ASgewUeUS3QYohfrd1J/gvuoSRnQfXQlejewBG1Ex8
Flag: EXEMPT bug fix

Change-Id: I07280bce70dd25d5ab78210302f08c0614309130
2024-10-15 11:54:04 -07:00
Treehugger Robot 28dbcc7260 Merge "Optimize updating hotseat items in overflown taskbar" into main 2024-10-15 07:28:45 +00:00
Toni Barzic 518ca4609c Optimize updating hotseat items in overflown taskbar
The logic for updating hotseat items in taskbar involved adding all
available recent items to the view, and then removing ones that
overflow. It also preemptively added overflow icon, and then removed it
when no overflow was detected.

This cl updates logic to stop adding recent items before they cause
overflow, and add overflow icon only when needed.

Bug: 368119679
Test: Keep opening apps until taskbar enters overflow, and verify that
expected number of app icons is displayed, and overflow icon is shown in
the correct place.
Flag: com.android.launcher3.taskbar_overflow

Change-Id: Icaad4386b54bbfccba8ace5876d7fe5c90cb7798
2024-10-11 23:15:45 +00:00
Toni Barzic 1295ffec85 Improve max taskbar icon count calculation
Updates calculation for max number of icons that can be shown in the
taskbar before hitting overflow to:
*   account for size of the three button nav, if shown
*   size of margins between icons
*   difference in all apps button and divider icon sizes (compared
    to baseline icon size)

Bug: 368119679
Test: Keep adding app icons to taskbar in desktop session until it hits
overflow with three button nav enabled, both in landscape and portrait
orientation - verify the taskbar enters overflow before icons start to
overlap with nav buttons.
With button navigation disabled, taskbar enters overflow as it starts
nearing screen edge. Transition between transient and persistent taskbar
keep consistent number of icons shown.

Flag: com.android.launcher3.taskbar_overflow
Change-Id: I66a12b390295dd50937e66a5bdf0e3e616b4a850
2024-10-11 19:50:25 +00:00