When splitting a task that is already part of a split app pair from the
TaskBar, with the enableOverviewIconMenu feature enabled, position the
IconMenu to the left of a leftRightSplitApp pair, or the top of a
topBottomSplitApp pair
Fixes: 317001670
Test: Manual
Flag: ACONFIG com.android.launcher3.enable_overview_icon_menu TEAMFOOD
Flag: ACONFIG com.android.launcher3.enable_grid_only_overview TEAMFOOD
Change-Id: I4740d7c96635ee9542f7061938baf6fbf2ca01d4
- RecentsView only see itself owning RecentsAnimationController and RemoteTargetHandle after live tile is enabled via onGestureAnimationEnd to RECENTS
- RecentsView will finish recents animation if it owns RecentsAnimationController and is leaving RecentsView
- Otherwise, reset() would not reset RecentsAnimationController or RemoteTargetHandle
- Added logging for interaction between gesture and RecentsView to aid future debugging
Bug: 288557298
Test: manual
Flag: None
Change-Id: Icdcb91b98b2bb5d6d3bc30070f533ea79915bc09
- For case that there are no TaskViews, onLayout is not called, so updatePivots isn't called when folding
Fix: 325314248
Test: Manual
Flag: None
Change-Id: If7377f2e4fcbe4a874f823bb99b0b197cd5f7b87
- This avoid diverging code path when animation is off
- Also made sure menuTranslationX and Y always reset when not needed
- Also remove AnimatedVectorDrawable in favour of scale animation in code, as AnimatedVectorDrawable doesn't work well when animation is off
Bug: 319086207
Test: OverviewMenuImageTest
Flag: ACONFIG com.android.launcher3.enable_overview_icon_menu TEAMFOOD
Change-Id: I4a18cf4aac3237031095c2600c777b6c4c3e518f
To fix the taskbar stash delay when launching an app, ag/18875100
sets the state so that the taskbar stashes immediately after
app is launched.
Since we cannot know if the app is translucent at that point,
we have to check after the animation is started so we can update the
launcher visibility state.
Bug: 314792981
Flag: ACONFIG ENABLE_HOME_TRANSITION_LISTENER TRUNKFOOD
Test: HomeObserverTest
Change-Id: Ifc3a6559d7a8c6fda4c08a0fc2d6791da46b38d6
Move IPip.aidl and IPipAnimationListener.aidl to common.pip
package as a part of PiP2 refactoring.
Make sure users of these Binder interfaces in Launcher
also reference the updated classname and package.
The plan is to use these interfaces to implement
PiP2 <-> Launcher IPC to facilitate transitions and animations
for gesture nav and auto-enter PiP for instance.
Note: this CL shouldn't yield any behavioral changes.
Flag: NA
Bug: 325481148
Test: mp droid
Change-Id: I065334f6777cd1489c739d95abf0fab8285860ed
Flag: LEGACY ENABLE_KEYBOARD_QUICK_SWITCH ENABLED
Fixes: 325057678
Test: used alt+tab on a phone from home and from an app
Change-Id: I98388fea448fd1932d767c420e232d1451e0bbfe
NavHandleLongPressInputConsumer handles long presses on the nav handle
and passes the touches on to a delegate if the touch is not a long
press.
When bubbles are expanded, we create a new input consumer that does
nothing and allows bubble input consumer in shell to take over.
Change the order how the input consumers are created. Create the bubbles
input consumer first, so it can be passed in as a delegate to the
nav handle input consumer. And this avoids bubbles overriding the nav
handle behavior.
Flag: ACONFIG com.android.wm.shell.enable_bubbles_long_press_nav_handle DISABLED
Bug: 324910035
Test: manual, expand a bubble, long press on home button for CtS
Change-Id: I05c219145c096a567bb0bb5a9cb3a40046b29519
* Now we log the original source of the first selected app
as soon as the user selects it (previously we only did when user
selected second app)
* We log the item info for the second app to determine second
surface.
* Added new metrics to log after user has started a split session
and ended a split session
* We log different cancellation reasons (cancel button,
home gesture, general other app interruptions, etc).
* One KI/Bug: When the second app is selected via taskbar in
overview, the container will say hotseat because we are using
Launcher's logger and not Taskbar's. Taskbar's logger manually
overwrites the container in TaskbarActivityContext, we may be
able to make something hacky that can allow us to overwrite, but
that'll have to be a separate change
Bug: 322551862
Test: Logged metrics manually with event and itemInfo
Change-Id: I177623fd00ce62acf2d4ee983b58561d8c946d59
- Make the log permanaent behind a DEBUG flag
- Logs are currently enabled with b/279059025 marked as the related bug
Bug: 279059025
Flag: None
Test: Manual
Change-Id: I60a75d73d40d00e7d42292f3d42cc9dd8c9b0825
This change updates the feedback shown to users to align with the
strings in figma for the back gesture tutorial.
Fix: 300919987
Test: Went through both the redesigned and previous gesture tutorial and
ensured the updated strings show up in the redesigned tutorial.
Flag: LEGACY ENABLE_NEW_GESTURE_NAV_TUTORIAL ENABLED
Change-Id: I057af6e8631b86ffaec8093ffbfbeae01c9d917c
- Introduced carouselTaskSize that represent size of TaskView in app to overview carousel, that is bigger than size of TaskView in Overview state
- Use nonGridScale and translation to scale TaskView to the desired carousel size
- For current task, inroduced carouselScale and translation to apply similar transformation at the carousel. They will be reset in `onPrepareGestureEndAnimation` after gesture is released and form the grid. Carousel translation can be invalidated and aniamte to 0.
- Fixed current task left/right wiggle that is caused by task shrinks and translate in different direction. Pivot is now moved to top right (or top left for RTL), to align with movement of current task.
- To compensate for the pivot change, current task is translated back to the carousel position by taskTranslation, and again translated by carouselTranslation for carousel -> fullScreen scaling. A complex interpolator is introduced to make current task moves in a vertical straight line rather than a curve.
- Fixed a bug in AnimatorControllerWithResistance when scaleStartResist==scaleMaxResist that causes division by 0. For grid overview, resistance kicks in after reaching carousel size, and current task size won't reduce further
- Added PendingAnimation#addAnimatedFloat that uses animator provided by AnimatedFloat, so the animator can be canceled and reaniamte from AnimatedFloat side; AnimatedFloat now clears the property values during cancel so the canceled animator still referenced by PendingAnimation can no longer change the values
Fix: 318352235
Fix: 308643507
Flag: ACONFIG com.android.launcher3.enable_grid_only_overview TEAMFOOD
Test: presubmit
Change-Id: I2872d8b2204798fe5e05c10d08480a81e60bb498
The chip menu was updated to a wrong position when the chip menu was visible and the display orientation changed. An animation to hide the TaskMenuView was happening during the rotation. The animation started before the rotation with wrong positions associated to it, thus, updating the position of the IconAppChipView with wrong X and Y position.
Fix: 320633351
Flag: ACONFIG com.android.launcher3.enable_grid_only_overview TEAMFOOD
Flag: ACONFIG com.android.launcher3.enable_overview_icon_menu TEAMFOOD
Test: TaplTestsSplitscreen.testAppChipIsPositionedCorrectlyAfterRotation
Change-Id: Id19ce02f09fa5ff50c6caeab02286d548a520c94
This CL adds a handler function in SplitAnimationController that manages the complicated logic flow for launching an app pair when already inside of an app.
To give an idea of the complicated logic:
If the user tapped on an app pair while already in an app pair, there are 4 general cases:
a) Clicked app pair A|B, but both apps are already running on screen
b) App A is already on-screen, but App B isn't
c) App B is on-screen, but App A isn't
d) Neither is on-screen
If the user tapped an app pair while inside a single app, there are 3 cases:
a) The on-screen app is App A of the app pair
b) The on-screen app is App B of the app pair
c) It is neither
For each case, we call a different animation and launch the app pair in a different way.
When merged, this patch will fix all animation glitches that are currently happening in these situations, and get us 90% of the way to having the ideal animation in all cases. There are still a few complicated cases that need a polished animation (like when you launch app pairs with custom ratios), which will be implemented in a following patch soon (I thought this CL was big enough already as is).
Bug: 316485863
Fixes: 315190686
Test: Manual testing of all the different launch combinations
Flag: ACONFIG com.android.wm.shell.enable_app_pairs TEAMFOOD
Change-Id: I5c0e03512bb706360c575d833cac6ed02a5de936
This fixes the bug where user performs double swipe back to home and we
have a floating window on the screen.
Fixes: 277515917
Test: From an app, back swipe to home, and then immediately back swipe
to home again
Flag: NONE
Change-Id: If312ee55efeaadde896511c6d449826368b15a84
- Calling TIS.onUserUnlocked() will create a new InputConsumerController
and also call register() on that consumer, which will under the hood
destroy and create the consumer with WM. However, if onUserUnlocked()
is called multiple times (generally not the case), the second call
will trigger the creation of a new InputConsumerController and try
to call destroy with the new consumer's token instead of the old
one, and when it creates a new consumer WM will throw an exception
complaining that there is already a consumer.
We should instead use the same input consumer controller instance
for each registration so that we can destroy with the same token that
was previously used to create the consumer
Fixes: 313284686
Test: Force trigger onUserUnlocked() multiple times and ensure no crash
Change-Id: I67da9a1ca82568770d470fd94f17378fd50c02f4