Commit Graph

1129 Commits

Author SHA1 Message Date
Graciela Wissen Putri 2f4ccc63b6 Add task menu item to move task to external display
Call SystemUiProxy.moveToExternalDisplay to move existing Overview task to desktop in external display

Bug: 372872848
Test: atest
NexusLauncherTests:com.android.quickstep.ExternalDisplaySystemShortcutTest
Flag: com.android.window.flags.move_to_external_display_shortcut
Change-Id: I096a9839956ab5cab86bd0aaabc625a8587ca42a
2024-10-14 15:14:01 +00: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
Orhan Uysal 3d7bba6a6e Merge "Use desktop API to remove desktop for dismiss" into main 2024-10-08 15:18:06 +00:00
Orhan Uysal c2adf8cf9c Use desktop API to remove desktop for dismiss
When overview tile for desktop is dismissed, use the shell API instead
of calling the system server directly to remove tasks in the desktop.
This let's desktop fix it's state and call the system server instead.

Bug: 370757235
Test: m and dismiss overview tile from desktop
Flag: com.android.window.flags.enable_desktop_windowing_back_navigation

Change-Id: Ia2abd0ab5a27759c92e0328beb460810ad2af898
2024-10-07 16:39:54 +00:00
Vinay Joglekar b0354e7be9 Merge "Fix a bug where the running task would be drawn below recents task" into main 2024-10-04 18:25:58 +00:00
Jordan Silva c407f1aa5a Fix a bug where the running task would be drawn below recents task
When the live tile is the adjacent app to be launched, it will wrongly update the pivot and translate all the tasks to the side, resulting in a broken animation.

This bug was introduced in ag/29639296, while fixing the launch of the the adjacent task while the live tile was in the center of the screen. To solve this excessive translation, we need to update pivot only when adjacent task is not a live tile.

Bug: 361744056
Change-Id: I56cbabcc351b0becd791b58dd94f65cd0b533bc2
Test: Launch central/side large tile with different live tile combinations
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
2024-10-04 07:55:25 +00:00
Jordan Silva 06dbdcea4e Fix a bug where the last large task index was not being set correctly.
This was causing the focused task shift to be calculated incorrectly, which was resulting in the focused task being shifted too far to the left.


Bug: 330342294
Fix: 371490320
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Test: Manual. Open 1 DesktopTask, 1 FocusedTask, 2 other tasks in the grid. Dismiss the focused task. The rebalance should work keeping the new focused task next to desktop task.
Change-Id: If6f95814942c2cbadc30a0082649569f21dea60a
2024-10-04 07:28:42 +00:00
Treehugger Robot 5a90a5ab96 Merge "Fix for recents button quick switch with only focus and desktop task" into main 2024-10-04 05:05:37 +00:00
vinayjoglekar b6ac8b2ae9 Fix for recents button quick switch with only focus and desktop task
This CL also fixes : Home -> Recents -> Recents opens the last large tile (Which was broken when there is desktop window tile in recents.)

Test: Manual
BUG: 365756337
Fix: 365756337
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Change-Id: I0b8fe3a0a7074355f14ced23ae282fe2943d8ce9
2024-10-03 18:58:48 -07:00
Treehugger Robot b4b2d16bcc Merge "Fix translation when focused task or desktop task is dismissed. (3/4)" into main 2024-10-02 00:38:10 +00:00
Treehugger Robot da290bcacf Merge "Make large task tile snap to position after scrolling" into main 2024-10-01 23:01:37 +00:00
Jordan Silva 0cf067ef47 Fix translation when focused task or desktop task is dismissed. (3/4)
This CL uses the same logic used for handheld dissmiss translation to fix the following cases when large tile is enabled for desktop task:
- When the LAST focused task is dismissed (i.e., no other task in the grid), translate all large tiles from the right side to the left, to occupy the dismissed focused task position.
- When Desktop Task is dismissed, translate focused task and grid from the left to the right side to occupy the dismissed desktop task position.
- When 2 tasks are visible in recents (i.e., 1 focused task, 1 desktop task) and the user dismisses the desktop task while in Clear All Button page (page 2), the focused task translates when no translation should be done, due to snapping to ClearAllButton page on Tablet. To fix this we introduced a logic in getOffsetToDismissedTask to use the previous page for the calculation when the grid snaps to Clear All Button page.

Bug: 353948136
Fix: 353948182
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Test: OverviewDesktopTaskImageTest
Change-Id: If8b06410c26a8f817d84ec6a635a66b2941e3ae9
2024-10-01 15:35:22 +00:00
Alex Chau ded6500848 Make large task tile snap to position after scrolling
- There's an edge case when there are only 2 grid tasks, mNextPage will still be on the grid tasks when they're not fully visible, so the new isAnySmallTaskFullyVisible check can't kick in. This only happens when grid tasks are barely out of screen.

Fix: 370733696
Test: Scroll betwene large tiles, it should always snap after scrolling
Test: Scroll from focus task to grid task, it should only snap if grid tasks aren't fully visible
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Change-Id: I3b0a80ceffb1caae57aa53b1c949c5e51336231a
2024-10-01 16:03:25 +01:00
Alex Chau 89283aa329 Override pivot in TaskViewSimulator as well for zoom in launch animation
- When launching large tiles, we zoom in RecentsView into the task we're launching, override pivot of RecentsView in the process
- This pivot override to be applied to TaskViewSimulator if a live tile is on screen, to avoid live tile animating to wrong position
- Also ensure the live tile draws above RecentsView, to avoid wallpaper blur from applying on the live tile

Fix: 361744056
Test: Launch central/side large tile with different live tile combinations
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Change-Id: I804edb988fb157d939dba34bc596c8b43aac8a45
2024-10-01 15:42:00 +01:00
vinayjoglekar 562ab4d188 Fixed split in Desktop windowing
When desktop windowing is enable and split is selected, during second app selection apps' scroll was far off on left. There were several things needed to fix this :
1. Hide DesktopTaskView during split select mode by changing splitAlpha
2. Fix min/max scroll calculation by excluding DesktopTaskView in split select mode
3. Exclude DesktopTaskView in updateGridProperties row length calcualtion

Testing: Manually needed to test multiple scenarios
1. Split focused task.
2. Split Even/Odd tasks in top and bottom rows.
3. Split tasks from home screen
4. Split and rotate screen.
5. Split from app icon chip

Test: SplitSelectStateControllerTest, Manual
BUG: 330342294
FIX: 330342294
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Change-Id: I789873100f42896c9ed3084accb0f6970abcba0c
2024-09-30 15:22:40 -07:00
Treehugger Robot 2b1208e803 Merge "Animated fullscreen and desktop carousel attaching together" into main 2024-09-30 17:39:55 +00:00
Alex Chau 52afe8b794 Pass correct scrollDiff to translateTaskWhenDismissed
- This is a follow-up of refactoring CL ag/29580515, which passed wrong parameter to a function

Bug: 353948182
Test: manual
Flag: EXEMPT REFACTOR
Change-Id: I544f4142b1007c034f8e7364e48c32e6500e03f8
2024-09-30 13:01:33 +01:00
Alex Chau 396441545f Animated fullscreen and desktop carousel attaching together
desktopCarouselDetachProgress:
- Controls whether desktop and fullscreen carousel is attached (RecentsView..DESKTOP_CAROUSEL_DETACH_PROGRESS)
- When fully detached (progress==1), hide the carousel (RecentsView.applyAttachAlpha)
- As the detach progress increase, we animate the other carousel away by using `getMaxHorizontalOffsetSize`, with additional maxOverscroll to make sure the other carousel won't be seen even if user overscroll RecentsView (RecentsView.updatePageOffsets)

min/max scroll changes
- When desktop and fullscreen carousel detaches, disallow scrolling to the detached carousel. This avoids quickswitching or scroll to the other carousel (RecentsView.getFirstViewIndex and RecentsView.getLastViewIndex)

State machine changes:
- On Overview states, desktop and fullscreen carousel is attached. Otherwise, they're detached, including in quick switch and home. (BaseState, RecentsState, OverviewState, BackgroundAppState)
- StateController set/animate desktopCarouselDetachProgress between the above states (BaseRecentsViewStateController, FallbackRecentsStateController)
- On swipe up gesture release and going to Overview, animate attaching back the 2 carousels (RecentsView.onPrepareGestureEndAnimation)

Bug: 353948100
Test: quick switch; swipe from home/app; scroll in Overview; with normal/3p launcher
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Change-Id: Ic4217efb07db079825a3210afd306d9ef627c873
2024-09-30 11:43:31 +01:00
Alex Chau a3169790fd Merge "Don't hide DesktopTaskView in split select" into main 2024-09-27 20:56:59 +00:00
Jordan Silva 04484049fa Extracting handheld task dismiss translation to smaller functions (2/4)
This CL extracts the logic to translate the tasks used when Overview grid is disabled (i.e., for handheld) to 2 smaller functions that will be used for desktop and grid translation in the follow up CL.

Bug: 353948136
Bug: 353948182
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Test: OverviewDesktopTaskImageTest
Change-Id: Ie25fffaaca4580a8a483003d220b4bf6cdccbc66
2024-09-27 16:32:00 +00:00
Alex Chau 8b50c8f609 Don't hide DesktopTaskView in split select
- Setting DesktopTaskView to GONE completely breaks Overview layout. Instead keep them in split select but do nothing when being clicked
- With large desktop tile feature we'll properly hide DesktopTaskView

Bug: 330342294
Test: without large desktop tile, enter split select, layout isn't broken; clicking desktop task doesn nothing
Flag: EXEMPT BUG_FIX
Change-Id: I164ed75e8531e08b6d982e3bda418ae19fa272e9
2024-09-27 16:22:16 +01:00
Alex Chau e3dc1c5185 Merge "Fix grid task dismiss animation when desktop large tile is enabled (1/4)" into main 2024-09-27 09:01:50 +00:00
Jordan Silva 21ac8f1451 Fix grid task dismiss animation when desktop large tile is enabled (1/4)
- Fix bottom grid row size in createTaskDismissAnimation to subtract all large tiles from bottom row count.
This fixes the animation when dismissing a focused and a bottom row task turns into a focused task.

- Fix when snapping to last task, snap to focused task page instead of INVALID_PAGE (-1).
This prevents snapping to a wrong page (DesktopTask page) when last grid task is dismissed.

Bug: 353948136
Bug: 353948182
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Test: OverviewDesktopTaskImageTest
Change-Id: Ib4b0453eb6b99855615b22fe842ccbe1205c962d
2024-09-26 13:15:28 -03:00
Schneider Victor-Tulias 62335be7c9 Track all ActiveGestureLogs in ProtoLog
Flag: com.android.launcher3.enable_active_gesture_proto_log
Bug: 293182501
Test: checked protolog traces in winscope
Doc: go/launcher-protolog-support

Change-Id: I2eb153aa9a94fe49f9c5e9b93b0be5e14fb4eb9c
2024-09-25 14:28:00 +00:00
Randy Pfohl 31aefc3290 Merge changes from topic "windowRecents" into main
* changes:
  Cleaning up unusued handlers
  Moving RecentsWindowManager away from the singleton pattern
  Limited recents in window introductory cl
  abstracting fallback views to support container instead of activity
2024-09-24 16:13:30 +00:00
Jeremy Sim 26a0afe14f Merge "Fix bug with over-expanding split task tile" into main 2024-09-24 00:52:24 +00:00
Jeremy Sim 803a4a5bb1 Fix bug with over-expanding split task tile
This CL changes GroupedTaskView#onMeasure() to return more robustly in the case where a single task from a GroupedTaskView is staged.

See bug for fine details, but basically we no longer allow onMeasure() to re-bound the split task to fullsize in split selection state -- we leave it in half size all the time (with scale and translation applied). To allow it to stay scaled-up and translated properly across rotations and stuff, we now avoid resetting translation and scale until split select is exited.

Fixes: 365476600
Test: Manual test with offscreen tiles, rotations, fake landscape and seascape
Flag: NONE bugfix
Change-Id: I0ee8d13d310ed1f134f3f396bb87541a5ea685ef
2024-09-23 15:31:02 -07:00
randypfohl c50aa8bf31 Limited recents in window introductory cl
Test: Built and tested locally

Flag: com.android.launcher3.enable_fallback_overview_in_window

Bug:292269949

Change-Id: I5352ba0b6c5bc196fbd1322d435a7e27e884f7b5
2024-09-20 16:09:50 -07:00
Sunny Goyal 621918feda Changing min-sdk version of Launcher to 31
Bug: 368071216
Flag: EXEMPT refactor -> dead code removal
Test: Presubmit
Change-Id: I1f0113c56de56f12f3a174eb31c3f8e8a09407e6
2024-09-20 06:00:10 +00:00
Alex Chau ca7df57c08 Reland "Separate desktop and fullscreen carousel"
This reverts commit a555f4ca1b, and relands commit 9420ba7515.

- attachAlpha should only be reset in onRecycle, otherwise applyLoadPlan or moveRunningTaskToFront will unexpectedly reset it via resetViewTransforms. This fixes TaplTestsQuickstep.testQuickSwitchFromApp which assert all visible task must be on the left hand side of the screen during swipe up

Fix: 353950224
Change-Id: If1c1524e435c8007844bcd51d8695a6d3b00450b
2024-09-13 22:00:29 +01:00
Chaitanya Cheemala (xWF) a555f4ca1b Revert "Separate desktop and fullscreen carousel"
This reverts commit 9420ba7515.

Reason for revert: Likely culprit for b/366196741 and b/366191730

Bug: 353950224
Fix: 366196741
Fix: 366191730
Change-Id: Icc84aaaae1a6bd8b21f059331715fb25163793b8
2024-09-12 15:48:28 +00:00
Alex Chau 9420ba7515 Separate desktop and fullscreen carousel
- setRunningTaskHidden now changes attachAlpha only, stableAlpha is untouched as part of the attach animation, so both alpha can be set independently without interferring with each other
- During swipe up, hide task of differnt type (fullscreen/desktop) from the carousel, apply unhide when the gesture settles
- Update the min/max alpha calculation when a type of task is hidden from the carousel

Fix: 353950224
Test: Quick switch, swipe up, and scroll in Overview with and without Desktop tile, on phone and tablet
Test: presubmit test on quickswitch and swipe up
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Change-Id: I0a63da3ee3e55f4d1edbc53b2a4c5fccda2af387
2024-09-12 09:30:46 +00:00
vinayjoglekar 941a9e4f98 Add keyboard navigation for all large tiles
Currently large tiles are excluded from adding into collection which is used for keyboard navigation. This cl adds them if desktop windowing tile is enabled.

Test: TaskGridNavHelperTest
BUG: 361070854
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Change-Id: I63fbb6867c34bbd80df926d750a7a392860b70a0
2024-09-11 16:02:18 +01:00
Alex Chau a7c90bbcd1 Introduce RecentsView.getTaskViews for easy for-each looping
- This vastly simplified the need to call do a indexed loop with getTaskViewCount() and calls requireTaskViewAt() each time, useful for code that needs to loop all TaskViews
- removeTasksViewsAndClearAllButton and resetTaskVisuals have no reason to loop reversed, so I just loop them in order

Fix: 365534984
Test: presubmit, manual
Flag: EXEMPT REFACTOR
Change-Id: Ib69f8439f3a7509fc57ec2430affa207c038bf46
2024-09-09 16:39:58 +01:00
Treehugger Robot 255bb6a80c Merge "Improve Task launch logging and function naming" into main 2024-09-06 15:15:50 +00:00
Alex Chau adccfa9aa6 Add logs around taskStack changes in RecentsView
Bug: 310064698
Test: manual
Flag: EXEMPT REFACTOR
Change-Id: I2334b0203d17fe534c2a715d3233e800036f0a36
2024-09-06 12:47:59 +01:00
Alex Chau 54fc5e0e52 Improve Task launch logging and function naming
Fix: 360186814
Test: manual
Flag: EXEMPT REFACTOR
Change-Id: I22c5a08382800941f0dd8f64f6129438ac04edaa
2024-09-05 16:58:06 +01:00
Alex Chau 31d465937b Only refresh TaskThumbnailViewDeprecated if runningTaskShowScreenshot has changed
- This is a follow-up of ag/28922223, which caused a RECENTS_SCROLLING jank regression
- The regression is probably caused by TaskThumbnailViewDeprecated unnecessarily redrawing, the fix is to only redraw when needed
- Also combined setShouldShowScreenshot and refreshThumbnails into a single method, so we can easily check inside TaskView if a refresh is necessary
- Centralize screenshotTasks logic into RecentsViewUtils, and centralize thumbnailView refreshing inside TaksView.setShouldShowScreenshot

Fix: 362294538
Test: Invoke Omnient or Screenshot hardware button on live tile, verify running task switches to screenshot after overlay closes
Test: Select/Screenshot swithces to screenshot normally
Flag: EXEMPT BUG_FIX
Change-Id: I7c6e73e52ebf18e7c59bb9afea029246b92681d2
2024-08-30 14:46:22 +01:00
Uwais Ashraf 7640d97421 Make TasksRepository listen to changes in task visuals and update
To do this TaskVisualsChangedDelegate was added which multiplexes two listeners that are closely related.

Thumbnail overriding capabilities were also removed.

Fix: 342560598
Test: TaskVisualsChangedDelegateTest, TasksRepositoryTest
Flag: com.android.launcher3.enable_refactor_task_thumbnail
Change-Id: If065e4179cd1f15fe2cdf9b6bae51afcb57abcc6
2024-08-28 18:18:31 +00:00
Schneider Victor-tulias 51433debcd Polish transition between desktop mode and overview
Fixing desktop task in place along the x-axis and animating its background's alpha to more smoothly handle the transition.

Flag: com.android.launcher3.enable_desktop_task_alpha_animation
Fixes: 320307666
Test: swiped to and from desktop mode and overview
Change-Id: I38d62d0c966733f96c2f4d4ecfa4a9418039fd48
2024-08-27 18:15:06 +00:00
Luca Zuccarini 6bf20cd965 Merge "2/3 Move some Shell utils to the Shared package." into main 2024-08-26 10:07:55 +00:00
Alex Chau 24e03825cd Fix wrong condition used to calculate clearAllShortTotalTranslation
- We now calcualte the first task's start position, and compared against the expected position (mLastComputedTaskSize) to determine if we need extra translation for ClearAllButton
- The calculation is done with `mIsRtl = true`, and only only flip +/- when applying translation
- http://screen/brM3taew74Z3uZJ shows what happens without clearAllShortTotalTranslation:
  - Blue area is mLastComputedGridSize, green area is longRowWidth
  - firstTaskStart is caculated from left of grid size, adding longRowWidth
  - Red area is mLastComputedTaskSize, where focus task is in the middle (for grid-only-overview it's in top right)
  - clearAllShortTotalWidthTranslation is the yellow area

Fix: 354104098
Test: With normal/largest display size, LTR/RTL, focus task /grid only Overview, swipe up with 1/2/6/7 tasks
Flag: EXEMPT BUG_FIX
Change-Id: I324eebc0a2b2129a4ba62d4569bc555b74140c21
2024-08-23 12:03:40 +01:00
Alex Chau 11290775f4 Merge "Refresh runningTaskView's thumbnail after setting shouldShowScreenshot to true" into main 2024-08-22 15:17:35 +00:00
Jordan Silva e7c300f8f5 Merge "Fix condition when should focus on running task" into main 2024-08-22 10:32:50 +00:00
Alex Chau eececf272e Merge "Reset mTopRowIdSet in applyLoadPlan" into main 2024-08-22 09:49:27 +00:00
Jordan Silva 4fb37a8ffa Fix condition when should focus on running task
Bug: 353947137
Fix: 353947516
Fix: 353947467
Fix: 353947334
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Test: OverviewDesktopTaskImageTest
Change-Id: I6210335333163ba70c228215e01889c0d13ec896
2024-08-22 09:50:52 +01:00
Alex Chau 1ca8471ae5 Refresh runningTaskView's thumbnail after setting shouldShowScreenshot to true
- TaskThumbnailViewDeprecated won't redraw automatically unless refresh() is called

Fix: 346696742
Test: Invoke Omnient or Screenshot hardware button on live tile, verify running task switches to screenshot after overlay closes
Test: Select/Screenshot swithces to screenshot normally
Flag: EXEMPT BUG_FIX
Change-Id: I678fb155bd577afbacfde7233956ce6cfa5e569d
2024-08-21 21:39:48 +01:00
Luca Zuccarini c1f0506da0 2/3 Move some Shell utils to the Shared package.
Bug: 322791067
Flag: EXEMPT move only
Test: NA
Change-Id: I076d41404f23bd44fa6157a5dc39a60e467c79c3
2024-08-21 19:47:12 +00:00
Jordan Silva b06ff83808 Move DesktopTask to front of RecentsView (1/2)
This CL updates the DesktopTasks in the RecentsView to be displayed after the focused task, separated from the other tasks in the grid. The DesktopTasks will be larger, following the same size used for focused tasks.
It was necessary to do the following changes to support DesktopTask at the front of the list.
1. Sort the GroupTasks in applyLoadPlan to move DesktopTasks after all other tasks.
2. Update the target page to take into account the DesktopTasks after the running task.
3. updateGridProperties had to support DesktopTask and Focused Task to be positioned at the front of the list. This function updates view translations to support the grid with two rows and rebalacing the position after a task is dimissed.
4. Update the max and min page scroll. Updated getFirstViewIndex to check for a DesktopTaskView, and if it doesn't exist, it uses the focused task as reference.
5. TaskView.updateTaskSize was updated to prevent DesktopTaskView being resized. This change makes DesktopTaskView to have the same size of our current focused task.
6. Update several places using focused task to use isLargeTile.

Bug: 353947137
Fix: 353947516
Fix: 353947467
Fix: 353947334
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Test: OverviewDesktopTaskImageTest

Change-Id: Ic7c0d8340ca259e8644de180aa6859a3c968d66e
2024-08-21 17:43:36 +01:00
Alex Chau 9109b81a95 Reset mTopRowIdSet in applyLoadPlan
- All taskViewIds become obsolete after removing and re-adding, so we'll need to reset mTopRowIdSet when removing all taskViews
- OverviewActionsView.updateActionButtonsVisibility can be called before updateDimension (where mDp is set), so a null check is necessary
- Fixed TestStaibilityRule failing when running FallbackRecentsTest alone. FallbackRecentsTest runs with 3P Launcher, in that case launcherPackageName is our test activity, and launcherVersion can be null. This can only occur in a local run, thus return LOCAL in this case.

Fix: 355042336
Test: FallbackRecentsTest and manually testing dismiss
Flag: EXEMPT BUG_FIX
Change-Id: I9125ea38a567deb0d3028e7d7407397d1dc06ade
2024-08-21 12:37:14 +01:00