- Edit Mode doesn't close after dragging / dropping an app
- Edit Mode can be entered through options popup menu, Spring Loaded still entered by dragging items
- Adds new onLeavingState call to launcher states to cleanup changes
Bug: 279590398
Flag: MULTI_SELECT_EDIT_MODE
Test: manually tested the new state with flag on/off
Change-Id: If4550037f9659dcb8cd8b1943388d1ec5d55fa29
- The main issue arises when a task is successfully launched from
overview, but the activity later finishes (ie. during resume) which
prevents the usual logic of resetting Launcher to a good state
(ie. it can get stuck in overview with a blank or empty snapshot)
In this case, the Launch will "succeed" so that onTaskLaunchFailed
is not called, but then also silently fail (launched task finishes
and Launcher is again resumed) before Launcher stops, which does the
usual resetting of the state back to normal state after quickswitching.
This change checks for this case by listening for the activity and
transition state, and in the case where Launcher has not been stopped
or is resumed again after the transition finishes, returns the
user to the default home state.
This primarily only affects quickswitch for now, as other launch
failures leave the user in a valid state (ie. overview) while this
issue will leave the user in background state while quickswitching.
Bug: 268448123
Test: Quickswitch to an activity that finishes when resumed
Change-Id: I7d554f8fd521f7bc480dc06930ad91eeef0f1a1a
Pass in the display id when asking wmshell to show desktop apps or when
querying the number of visible desktop tasks.
Bug: 278084491
Test: open some apps on the desktop, swipe up to recents, tap the
desktop tile to open desktop again
Change-Id: Ia7328613244a1aa401e0e4792bc747a4b99b412d
High level:
- As you swipe up from an app (OtherActivityInputConsumer),
a state transition animation to All Apps is created in
AnimatorControllerWithResistance. The animation is played
alongside the Recents resistance animation (i.e. past the
settling point of Overview, which is at mCurrentShift 1).
- The actual state transition to All Apps only happens if you
release your finger in the "all apps region." This is set to
mCurrentShift 2, so double the distance that Overview rests.
- A haptic plays whenever you enter or exit this region, and
the all apps animation is set to 0 until the region is
active. This is so it's clear that something different is
happening.
- The panel that was previously used for tablets is now used
for phones during this transition. It comes in at full
opacity when you enter the region, and the contents (apps
and search suggestions) fade in as you continue swiping.
- The only gesture that is recognized in the all apps region
is a fling downwards, which will return you to the previous
app. Otherwise a left/right/up fling or slow release will
finish the all apps transition.
- The threshold is ignored if the flag is disabled (default)
or if FallbackActivityInterface is active.
Flag:
The threshold is ignored if ENABLE_ALL_APPS_FROM_OVERVIEW is
disabled (default).
Bug: 259619990
Bug: 275132633
Test: Manual with and without the flag enabled
Change-Id: Ie311b77252416d97677b2c56fad61dfd392b6fe8
When transient taskbar is invoked, it starts the recents animation.
Recents animation triggers the launch of launcher activity. We need to
ensure that after recents animation is cancelled (since the gesture was
only for taskbar), we bring the desktop tasks back to front.
When the transient taskbar gesture finishes, we need to ensure that
launcher state is restored to normal. With fullscreen tasks, launcher
activity in stopped after gesture finishes as a fullscreen task is on
top. This stop triggers the launcher state to return to normal.
When freeform tasks are visible on top of launcher, launcher activity is
not stopped. This means we have to manually move launcher to normal
state after transient taskbar gesture finishes.
Bug: 267364407
Test: enable proto 1, switch to desktop mode and open some tasks, swipe
up for transient taskbar, swipe up to recents view
Test: enable proto 2, move a task to desktop, swipe up for transient
taskbar, swipe up to recents view
Change-Id: I712bc5086407c26779638d824f34674f7db1ff51
This is usually a result of TaskIconCache updating in the background.
Fix: 267744363
Test: manual.
Change-Id: I83620f3774def7ffb07906a6d45b64e9aad6de71
* Consolidated init calls in SplitSelectStateController
* Also add support to launch from taskbar all apps
* Add logic in SplitSelectStateController to know whether
or not we need to dismiss existing TaskView vs relying
on mSplitHiddenTaskView null check
* Default click handling for SplitShortcut is to start
split selection mode
Bug: 251747761
Test: Initiated split from smart actions, thumbnail app
icon, home, taskbar in overview, all apps. Saw it choose
the latest thumbnail
Change-Id: Ib4f64e619c97615af458a19a9c0efd86c92979d9
Track gesture progress in desktop visibility controller. We need to
allow launcher to resume when gesture is in progress and freeform tasks
are visible.
Update overview state handling in desktop visibility controller. When
overview is enabled, launcher should be made visible, regardless of
freeform state. When exiting overview state, check freeform state to see
what should be shown and enabled.
Bug: 263264985
Test: manual, enable transient taskbar, move app to desktop, invoke transient
taskbar
Test: manual, enable transient taskarb, enable desktop mode, invoke
transient taskbar
Test: manual, disable transient taskbar, move app to desktop, swipe up
to overview
Test: manual, disable transient taskbar, enable desktop mode, swipe up
to overview
Change-Id: I63000441d9cf72769e6efb9d247ab4112c01839d
This CL introduces a new controller to manage the visibility of the
launcher workspace when desktop mode is active and freeform tasks
are visible.
This controller will be notified when the sysui state flag related
to freeform task visibility is changed.
The controller will modify the workspace visibility as well as
the flags on the activity indicating if it's been paused / resumed
based on freeform tasks being visible or not.
Bug: 245569277
Test: manual - enable desktop mode and open some freeform tasks
=> observe that the contents of launcher is hidden and
taskbar shows
- remove all of the freeform tasks
=> observe that the contents of launcher reappears along
with the hotseat.
Change-Id: I378ab97b40cbb954a06f4e2426b195efddad905c
Rotating while in the recents view select state causes all taskview screenshots to disappear. Removing the transition to overview also fixes this, but leaves launcher in an incorrect state.
- Updated API to allow transitioning states without animation.
- Removed the animation to update the state correctly while keeping the ui working.
Fixes: 251067808
Test: rotated back and forth on large and small devices, before and after entering select mode
Change-Id: I5bf89ceb1f6b27cde9f7638f32fee3a78ad85ff6
This CL fixes an issue where canceling any Launcher animation by entering Quick Switch would cause Overview to appear with all thumbnail tiles blank.
The issue occurred because we recently added a reset() to Overview that triggered on all state transition animation cancels. This fixed some issues, but introduced this bug.
Fixed by tailoring the reset() to only fire on animation cancels within BaseRecentsView and FallbackRecentsView.
Fixes: 246232494
Fixes: 243471493
Test: Manual
Change-Id: I175a22d52597a63e164a6f3b9353c62b199b0712
This commit fixes a bug where the user could cancel animations when transitioning between Launcher states, potentially resulting in a state where Overview elements (task thumbnails etc.) were wrongly hidden or invisible.
The bug occurred because functions such as createInitialSplitSelectAnimation() and createAtomicAnimation() did not carry out any cleanup upon animation failure. This resulted in RecentsView potentially being in a polluted state for the next launch.
Bug was fixed by adding cleanup routines to two onAnimationEnd listeners.
Fixes: 242715097
Test: Manual
Change-Id: I05415ecf515e247aa535e3ca8371e540c3189b01
This will help SysUI test team (who uses TAPL) to set up Gradle build for their tests.
Bug: 202567877, 234414088
Test: presubmit
Change-Id: I3d923ea4b54d1a4c3d2b345be09692727d30433e
When Launcher restarts (as the result of a UiModeChange or something else), it attempts to recover its previous state. However, the OverviewSplitSelect state is unique because it requires some additional information to recover properly (the taskId of the staged task and so on). This change makes it so that the relevant information is passed forward in the recovery bundle. Launcher will now restart in the base Overview state, and then immediately apply the saved data to recover the OverviewSplitSelect state.
Fixes: 233019928
Test: Manual
Change-Id: Ie6123ef9c374be000268f82857b696c49213c541
Merged-In: Ie6123ef9c374be000268f82857b696c49213c541
- Align overview actions to the top with a defined margin below task thumbnail, except for vertical bar layout
- In modal state, use task view's bottom as pivot, and expand using all the space about pivot
- Simplified overview actions margin calculation and moved some logic to DeviceProfile
Bug: 209981696
Test: manual on various devices
Change-Id: I4c96cb02c6f3d6adf30633ddeb883bc4eec16f36
* Also fix small other bug where we were
checking only for LauncherState
OVERVIEW_SPLIT_SELECT and not for equivalent
3P RecentsState
Fixes: 227419997
Test: Repro steps don't cause bug. Yay.
Change-Id: Ibb8238185b959d22d8455b6812d29b2e268d9739
* Copied logic mostly from
Base/RecentsViewStateController
* There's one KI crash specific to 3P
(b/209694087)
* Swipe to home animation is TODO, but
then again it also seems incorrect for
full-screen app. 3P has many cosmetic issues
throughout.
Bug: 195607777
Test: Tested w/ Nova launcher with grid
and non-grid, able to invoke split screen with
same animations as 1P launcher
Change-Id: I35a1bc92a51caccac4214289e614000cd47bb503
- Update floatingTaskView, apply splitsSelectTranslation and splitPrimaryScorllOffest when rotating while in split select
- Moved getSplitSelectTranslation to RecentsView
- When in portrait, treat STAGE_POSITION_BOTTOM_OR_RIGHT as STAGE_POSITION_TOP_OR_LEFT in split translation calculation
- Apply splitsSelectTranslation for portrait grid too
Fix: 201721153
Test: manual
Change-Id: I768a3b15de4d434674058b274c368798f5852917
- Generally close all floating view when starting home from Recents
Bug: 193432925
Test: with 3 button, open task menu, then press home
Change-Id: Ic99c50333c797f222fc8e682fd0f3fcc4d641d47
- Reverted to before ag/16095449 where reset() is called after state transition completed
- Call pageBeginTransition in dismiss animation to make sure onPageEndTransition is triggered to clear mCurrentPageScrollDiff properly
- Fixed a condition in resetFromSplitSelectionState ot use DeviceProfile.overviewShowAsGrid, as when state is in transition, showAsGrid() would be false
Fix: 207744890
Test: manual
Change-Id: I5a812a7ee26df2f953f7fed0155880620d2c4e66
- This can prevent the layered content behind to not be visible (and
since launcher draws a cutout and the wallpaper isn't shown, may
result in a black rect. We only specialize for this case while
Launcher is in Overview.
- Also don't need to defer updating drawsBelowRecents, this can result
in the state not being reflected since it runs after the last update
of the transform params
Bug: 205789573
Test: Swipe up from app and ensure behind layers are visible (also
ensure this doesn't affect blur during the swipe or optimizations
after you leave overview)
Change-Id: I07689b3d9b65708797576e5fbefe12fb1f544119
- We will still need to figure out why, but currently the overview scrim blocks the cut out during transition. To go around this, we need to move live tile app after the overview transition animation is over
- Some of the logic in RecentsView is no longer necessary since we are no longer reusing live tile params and simulator, but assign new targets each time
Fixes: 205587164
Test: manual
Change-Id: Icadf26182112bba544a4103b626effa37d4028b5
- Never apply split select translation to grid overview, instead use dismiss translation to make space to split placeholder to minimize motion and avoid janky double movement
- Ensures snapping to last task for end of grid split cases
- Adjust mCurrentPageScrollDiff due to coordinate shift
- Use longGridRowWidthDiff to shift all task to make space for split placeholder
- Also fixed a bug that split translation isn't reset if entering overview immediately after exit
Bug: 200537815
Test: manual
Change-Id: Ie1b57c34ce4bb079f898ba5b7c3464a714021847
This plugin hook never really worked properly. The touch handling was
always a bit off and it complicates the code.
Bug: 201460301
Test: Local
Change-Id: I19401be18f859b3bdf408a2e4aacd95ca95d35cc
Shows up only for large screen devices, not phones.
Tested for NexusLauncher, general 3P launcher support
needed for staged split (TODO b/195607777)
Bug: 195423591
Change-Id: I4d455769b17637174b590c640516b9fbb6352c3d
Bugs tracked in b/181704764
Bug: 181704764
Test: Tested on phone and large screen in multiple orientations
Change-Id: I07509006ae3d1f4425dc5119d0c8ed52b41a3bc2
Set all interpolators in QuickstepAtomicAnimationFactory instead of
overriding some in OverviewToHomeAnim. This also means we can just
use a normal state transition instead of OverviewToHomeAnim when
tapping outside recents (i.e. startHome()).
Test: in all three gesture modes, the same animation is played
whether tapping outside recents, pressing home, or pressing back
Bug: 185411781
Change-Id: Ibe8734e8bd7041943eb76cac30d7cac26a90c73e
Long ways to go to final UI - TODO(b/186800707)
Add comments to grid layout code,
no functional changes at all.
Bug: 181705607
Test: Enter split screen from overview task menu
in grid and carousel. Able to select all items
and enter split.
Change-Id: Ib62f1b286acf0781ec47862fa31b670e6ff1892a
> Merging overview and all-apps scrims into a single View
> Decoupling TaskMenuView from taskView
Bug: 184676497
Test: Manual
Change-Id: I49f7249eaa2a800054385ab8e73a441d6a1b5e16
- calculateTaskSize now returns the Rect for focused task
- Introduced calculateGridTaskSize for non-focused task, and translate non-focused tasks to fit the grid
- As Task Rect is now vertically centered, removed ClearAllButton's grid vertical translation
- When ClearAllButton is not shown (e.g. quickswitch), make sure ClearAllButton's scroll won't be used when page snapping. This happens when page scrolls are translated so they're negative.
- Added back ActionsView when task is focused below the TaskView, which become invisible as you scroll
- In Modal state, move the ActionsView down so it won't cover the TaskView
Bug: 175939487
Test: manual
Change-Id: Idfa94a51f856418adc0503cf04211dcb4b1814fe
Test: Swipe down on a task, swipe up immediately as it launches;
state stays as BACKGROUND_APP instead of NORMAL
Fixes: 171757635
Change-Id: Ia38774c01190bd184e229ff532ea9df2a75abcb4
Removing sections in all-apps during transition and treating
it as a single unit
Bug: 175137718
Test: Manual
Change-Id: I55a501d80b5903f1a9d92a26b3784784fd9e50fd
- Replace mShowAsGrid with state specific mOverviewGridEnabled and mCurrentGestureEndTarget
- Avoid showing invisible home task in grid
- Fix quick switch out of orientation in fallback recents
- Add a HOME state to switch to when starting home, to avoid showing grid overview briefly in quick switch
- Separate clear all button and overview actions handling
- Always maintain first task's fullscreen translation at 0 to avoid jumping when mOverviewFullscreenEnabled changes
- Moved fullscreenTranslation calculation to RecentsView
- Added GestureEndTarget -> BaseState translation to allow querying displayOverviewAsGrid for a displayOverviewTasksAsGrid
Bug: 174464863
Test: Launch overveiw from home, launch overveiw from app, launch into app, test for both small and large screens
Change-Id: Iee06d94d3067ea45cadd2051717223ddc0e6e70c
TODO:
* Extract out common elements in TaskShortcutFactory.MultiWindowFactory
for commonalities between new and old way of
invoking split screen
* Integrate with WM APIs (b/182002789)
* Write tests for SplitSelectStateController
Bug: 181704764
Change-Id: Ice35adb4ea82897f5e2433dc9b93a549f3d511b5
- This can be reproduced ocassionally without any obvious pattern, when this happen the page scroll and min/max scroll is messed up
- When this happen, onLayout happens before the first setGridProgress call from animations
- The fix is to request a relayout at the end of state transition
Bug: 174464863
Test: manual
Change-Id: I12683c49d7ed72349a4b9cb3b4d3871741e3e22e
3 Button mode doesn't use recents animation so live tile would not work on 3 button mode before migration to recents animation happens.
Bug: 169694902
Test: manual
Change-Id: I9574c624f3d220834fa18e910637cd64460adb0c
- Introduced gridProgress to RecentsView/TaskView ofr animating into grid
- Introduced gridProgress dependant translation and scale properties in TaskView
- Animate running task into grid with TaskViewSimulator
- Remove overview actions (for now) but keep clear all button in large screens
- Adjust ClearAllButton translation to acoomodate for grid
- Use screen width +-50% to calculate task visibility
- Use the position where TaskView is on screenEnd as pageScroll
- TODO: Handle separate recents activity
Doc: go/foldables-launcher-overview
Video: http://dr/file/d/107Aydii1LoFCwP63nWG3Twr2PBDE5ZgD/view?resourcekey=0-aUjdnx8ezimS9tmAgao9ag
Test: Test Launchering overview and launching overview from apps with folloiwng combination:
- large / small screen sizes
- portrait / landscape
- thumbnails from different screen sizes / orientations
Bug: 174464863
Fixes: 181509346
Change-Id: I4b691cde774f2e37532b68ba83c6eed399f2332e