This fixes a problem of 3-button variant of pinned taskbar. The code for updating the alignment (taskbar to hotseat) animation clashes with LayoutTransition, leading to weird icon states. This change coordinates these two animation systems.
Fix: 409442851
Test: ABTD cherrypick to Q2 release candidate (manual)
Flag: com.android.window.flags.enable_taskbar_recents_layout_transition
Change-Id: Ifa80c384500a9cd3e65090ee39487977a2ac3b5d
Taskbar stashes once an app is launched from taskbar, or remains stashed if you launch something from All Apps. The layout transitions therefore are unlikely to be seen by the user. Disabling them means when the user unstashes, they will see the end result of the transition immediately. The problem with them being enabled for transient taskbar is we set icon alpha to 0 if Taskbar is stashed, which conflicts with the alpha layout transition animation.
Flag: com.android.window.flags.enable_taskbar_recents_layout_transition
Fix: 406809935
Test: Manual
Change-Id: Ibcfc04e5c9af104725a69c8cceccef49544d7bd3
This cl includes: adding support to stash controller to get device locked state. Use different taskbar offset before and after lock screen.
Test: Manual
Bug: 407589216
Flag: EXEMPT bugfix
Change-Id: I55b27d39049458c741efc9bec365cdbc27d4e012
The taskbar shown on freeform display taskbar when
enable_desktop_taskbar_on_freeform_displays feature is enabled is
expected to remain in persistent taskbar state (and never
transition to transient taskbar). Given that transitions to transient
taskbar is not expected, use actual peristent taskbar sizing to layout
the taskbar in this case (similar to three-button navigation taskbar).
Bug: 390665752
Flag: com.android.window.flags.enable_desktop_taskbar_on_freeform_displays
Test: manual on desktop device - keep opening apps in desktop mode, and
verify that taskbar does not enter overflow based on transient
taskbar icon dimensions (i.e. that taskbar keeps filling up until
it hits intended horizontal margins)
Change-Id: If6cdadccf0fe4da1462b437a13def78f6050e3bb
Update usages of TaskbarActivityContext.inDesktopMode to account for a
possibility of a desktop flavour taskbar (i.e. pinned taskbar that
shows desktop tasks) being shown outside desktop mode, which may be the
case on freeform displays (e.g. when
enable_desktop_taskbar_on_freeform_displays feature is enabled, or on
home). Tasks launched from this taskbar should preferably be launched
into desktop mode.
Bug: 390665752
Flag: com.android.window.flags.enable_desktop_taskbar_on_freeform_displays
Test: manual on desktop device. verify correct taskbar is shown
on home screen, in overview, in desktop mode, with fullscreen
app shown. Verify opening/launching apps from taskbar works
as expected.
Change-Id: I8f198216d84fd165c2dcbf437c82e418e5c7405e
Null Protect Taskbar against onLauncherVisibilityChange crash.
Flag: EXEMPT not adding new behavior
Bug: 403294086
Bug: 404928723
Test: m
Change-Id: I84e899d26f93d484031073d1b63c6757daa8b141
To ensure consistent, controllable Taskbar in Connected Displays Behavior, move all independent calls to the singleton DisplayController's various methods into one place in BaseTaskbarContext, where we have access to the parent context and can override default behaviors of these methods throughout taskbar if in external display.
Flag: EXEMPT not adding new behavior
Bug: 401553128
Test: m
Change-Id: If9efc0cfc18bac3ee75bb64bf5280ea979d1faa2
1. Trigger `notifyIsInDesktopModeChanged` on
`visibleDesktopTasksCount` changes only when the multi-desks
flags are disabled.
2. Make `DesktopVisibilityController.isInDesktopMode` variable
private and legacy, which should only be used when the multi-desks
feature is disabled. All the call sites should go to check
`DesktopVisibilityController.isInDesktopMode(displayId)`, which
works both with and without the multi-desks feature enabled.
Bug: 402222877
Test: m
Flag: com.android.window.flags.enable_multiple_desktops_frontend
Flag: com.android.window.flags.enable_multiple_desktops_backend
Change-Id: I291e2be6d99e81b0c918ae7f39c17a8cd4ea0918
Folder and FolderIcon are UI objects and can talk to each other directly.
FolderInfo changes are already propogated via model callbacks, and doesn't need a separate listener pattern.
Bug: 398791288
Flag: EXEMPT bugfix
Test: atest FolderTest
Change-Id: Iefd47b8ea12a8ecaf34211a3d908220a0e999187
The gesture handle still persists in conjunction with the three buttons. In addition to being forced into three button mode, the taskbar on external displays needs to never enter transient mode. More info and before/after images on bug.
Flag: com.android.window.flags.enable_taskbar_connected_displays
Bug: 399718805
Test: Manual
Change-Id: Iff5c297c8ac4823fa24e7a8e4becd0447224cac0
This cl inlcudes: while user is in desktop mode, we will add state description(active, minimized) of each app icon to it's content description.
Test: Manual
Bug: 397555157
Flag: EXEMPT bugfix
Change-Id: Iaec18e7099108e8b076b76c637a41e29ed837265
Move SandboxContext to a separate class.
Remove all MainThreadInitializedObject references in Launcher3 and tests.
Remove ObjectSandbox interface and make RoboApplication extend
SandboxContext
Bug: 361850561
Test: Presubmit
Flag: EXEMPT dagger
Change-Id: I1a8af5e6ae59df44d8ad6732b4d6e949ac402d6c
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
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
Shift the taskbar to fulfill the 12dp distance if the distance between
the taskbar and the bubble bar is below this threshold.
Fixes: 376929094
Test: TaskbarViewControllerTest
Test: Manual. Test that the transient taskbar shifts properly.
Increased the minimum distance to 120 dp and verified that the taskbar
shifts correctly. Moved bubbles side to side, confirming the taskbar
follows. The return-to-home-screen animation to the hotseat plays as
expected from either side.
Video:
http://recall/-/gx8ASgewUeUS3QYohfrd1J/bJZ8PclmltZu7IupvBFrLn
Test: Manual. Test that the transient taskbar stashes properly.
Increased the minimum distance to 120 dp and verified that the taskbar
shifts correctly. Go to any application. Stash and un-stash the taskbar.
Video:
http://recall/-/gx8ASgewUeUS3QYohfrd1J/hCGRhUgIqvcehOrTQ2Ulvj
Test: Manual. Test that the transient taskbar pin/unpin properly.
Increased the minimum distance to 120 dp and verified that the taskbar
shifts correctly. Pin/unpin the taskbar.
Video:
http://recall/-/gx8ASgewUeUS3QYohfrd1J/f3fy5JKVZAk4wLCpVra4DK
Flag: com.android.wm.shell.enable_bubble_bar
Change-Id: Id4bd713da93053f90d9c2be8503dc93531a03b29
The static boolean also affects Taskbar within the Launcher process. We
only want this disabled for the Taskbar test Sandbox.
Flag: TEST_ONLY
Bug: 230027385
Test: NexusLauncherTests:com.android.launcher3.taskbar
Change-Id: Ife12e95ab34755d1aec42d79188c15232d8da092
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
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
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
This cl includes
- making pinned taskbar animate slide in/out animation from bottom of screen.
- no icon aligment with hotseat when taksbar is pinned
The solution
- upon state change applied on TaskbarLauncherStateController. offset taskbar background and icons to bottom of screeen and animate with slide in/out effects.
Test: manual, presubmit
Bug: 314279101
Flag: EXEMPT bugfix
Change-Id: Ife336ebd57eb2f60c2bc33ed6a4527c42111808f
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
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
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