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
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
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
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
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
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
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
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
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
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
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
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
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
- Only shows the overflow icon if all of the recent apps do
not fit in the taskbar.
- Limits the number of recent app icons on screen so that they
do not go out of bounds.
- Removes the overflow if it's not needed.
Bug: 368119679
Test: open app, enter desktop windowing, overflow only shows
when reaching max number of apps
Flag: com.android.launcher3.taskbar_overflow
Change-Id: I96040495ee38f67bce8e41f9eb4ec17fcef5189a
- Adds placeholder view to represent the Overflow affordance.
- Overflow button will always appear as long as there are any
recent apps.*
- Click / long click on the button will open KeyboardQuickSwitch
- Relevant code is Guarded by Flags.taskbarOverflow.
*Note that this is not up to spec. This change is only meant to
setup the codebase to support Taskbar Overflow.
Bug: 368119679
Test: open app, enter desktop windowing, click overflow button
Flag: com.android.launcher3.taskbar_overflow
Change-Id: I47f96797408fda09e8326ba8fb7981c91de80e36
Implemented nav bar placement update to be located opposite to the
bubble bar.
When bubble bar is moved to the other side of the bar, 3 button nav will
swap sides (without animation).
If taskbar has to be repositioned it does that with the animation.
Test: TaskbarViewControllerTest
Bug: 346381754
Flag: com.android.wm.shell.enable_bubble_bar
Change-Id: Id031706183c60cbd9c67537b01530acb43bae614
This cl includes
- Usage of TaskbarAllAppsButtonContainer and TaskbarDividerContainer in TaskbarView. This can be seen as a refactor.
- Animation refactor related to all apps button container refactor
Test: Presubmit
Bug: 356465292
Flag: com.android.launcher3.enable_taskbar_customization
Change-Id: I5b7c4f56aacac18fc6872f77b15e2e9ae896799e
Also fix calculation for divider position during this transition
when there are recent apps. Added tests as well.
Flag: com.android.launcher3.enable_recents_in_taskbar
Flag: com.android.window.flags.enable_desktop_windowing_taskbar_running_apps
Test: TaskbarViewControllerTest
Bug: 343522351
Change-Id: Ifffd620c1d4c156b37561584d6e3278b39804439
Added taskbar icon animation when the bubble bar expansion changes.
If there is enough space to accommodate both bars with spacing in
between, the taskbar remains. If there is not enough space, the taskbar
is animated out and then animated in when the bubble bar is collapsed.
Bug: 346391377
Flag: com.android.wm.shell.enable_bubble_bar
Test: Manual. Set taskbar to persistent mode via 3-button navigation or
through the taskbar itself. Have enough bubbles to cover the taskbar
when the bubble bar is extended. Expand the bubble bar and observe the
taskbar icons animating out. Remove a few bubbles so there is enough
space to accommodate both bars. Expand the bubble bar and observe that
both bars are visible.
Change-Id: I0b03a010c1e49ab39a17934f6629d5496fd66978
When bubble bar has bubbles, it will be expanded together with taskbar.
Include information about bubble bar appearing together with the taskbar
announcement. During expand include the location of the bubble bar,
whether it is on the left or right.
Bug: 344675357
Flag: com.android.wm.shell.enable_bubble_bar
Test: manual, enable talkback and check that taskbar expand announcement
includes information about bubble bar, check that when bar is on left,
announcement includes left and bar is right, announcement says right
Change-Id: I116ed531fe7032940478451508b37f4fd0bc98ff
- 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
Also clean up TaskbarRecentAppsController APIs
Flag: NA
Test: DesktopTaskbarRunningAppsControllerTest
Bug: 330551930
Change-Id: Ibd9c3d6aa1d5423b51a48ed0a972196752d5199a
Previously, app pairs and folders shared a common data model, FolderInfo. Now we need to separate them, so a new type, CollectionInfo, will serve as the parent of both types.
Bug: 315731527
Fixes: 326664798
Flag: ACONFIG com.android.wm.shell.enable_app_pairs TRUNKFOOD
Test: Manual, unit tests to follow
Change-Id: Ia8c429cf6e6a376f2554ae1866549ef0bcab2a22
This changes (and cleans up) the way app pair icons are composed. Previously, the background and 2 icons were drawn individually and separately onto the canvas. Now, they are composed into a combined drawable first. This also allows the full icon drawable to be requested by external functions (which will be needed for display app pairs in folder previews).
Bug: 315731527
Flag: ACONFIG com.android.wm.shell.enable_app_pairs TRUNKFOOD
Test: Visually confirmed that app pairs loooks the same in all scenarios: rotation, disabled, themed, taskbar, pinned taskbar. Screenshot test to follow.
Change-Id: I7242e0c525ef578a54a06fb9137fcfc42c6f0e86
We remove the added tint to taskbar themed icons to match how they look
in the hotseat on launcher home screen specifically for dark mode.
Fix: 323952706
Test: Turn on themed icons and dark mode. Compare app icons in taskbar
and in hotseat
Flag: N/A
Change-Id: I4dfe352ca17ef5537e48fcc3cff66ba4fd4f603a
This is fundamentally caused by the phone device profile not having task bar related attributes, which crashes in icon alignment animation. We had resolved it by skipping this animation based on isPhoneMode check. However, we passed in launcherDp instead of taskbarDp (from TaskbarActivityContext) which doesn't always have the most up to date information in race conditions (e.g. repetitively fold/unfold)
Fixes: 311431054
Test: repetively fold/unfold, make sure it doesn't crash
Change-Id: I65f600112da4123d337b3f59a2fe6dd13ac7af74
[App Pairs 8/?]
This CL adds taskbar functionality for app pairs:
- Ability to drag an app pair icon to Taskbar
- App pair launch from Home Taskbar
- App pair launch from Overview Taskbar
- App pair launch from in-app Taskbar
KNOWN ISSUES:
- Bug (b/315190686): if user is inside a running split pair and attempts to launch the same pair from an app pair icon on taskbar, Overview tiles get temporarily messed up (recoverable by leaving Overview)
- User can attempt to split with an app pair icon on the Taskbar. This should result in a "can't split with this" bounce animation on the SplitInstructionsView (to be implemented). Currently does nothing.
Bug: 274835596
Flag: ACONFIG com.android.wm.shell.enable_app_pairs DEVELOPMENT
Test: Manual
Change-Id: I5256547af236fc2deeb192d60bfe1f2b7ddc5647