Make sure to "freeze" bounds while dismissing the docked stack by
either maximizing or minimizing it.
Bug: 28196862
Change-Id: Ifcd9deda340de8bc46df949df2fa1049e2f45f92
If we start the forced resizable activity with an existing task,
avoid moving that task to the front. This can cause that a previous
task that was moved to the back gets moved to the front again just
because we started that activity. That's not good.
Bug: 28223489
Change-Id: If8acf31b8be98b82665de1015d5621331c37fb64
- This was causing us to try and launch the Recents activity again after
docking because the running task was the newly docked task and not
Recents.
Bug: 28177001
Change-Id: I222e50f6de00a9d7881da2182eebc61564fd3266
Also fix an issue where resize was not called.
And make the translation a bit larger, because the
animation is longer.
Bug: 27870534
Change-Id: Ia6128db8108fe57bee96816fc95fd0811d941ffb
- In PWM, make sure to read the height values after the new
configuration has been applied.
- Reset all navigation bar button icons when density changes.
- Adjust height of notification bar.
- Reload divider height values in SysUI and WM.
- Snap divider handle to a new position after loading the
new configuration, as the snap points change.
Bug: 26844819
Bug: 27450471
Bug: 27921696
Change-Id: I9e28f0c49f6367c5fcfac010e7a6e98a42e85996
Make sure to update the touchable region whenever the layout
changes. The layout is wrong if the window is invisible during
the first layout.
Bug: 27854148
Change-Id: Ic0501eccf7b919d10491c6f5aa0c0f1765a07c52
- When SysUI crashed, make sure state is up-to-date
- When divider gets invisible, update state because animations
won't finish
- Make sure to keep mMinimizedDock up-to-date in all cases, even
if docked stack is already gone.
- If docked stack is going away, reset minimized state
- Disallow undocking when minimized.
Bug: 27588187
Bug: 27486464
Change-Id: I6ea48562fae3a8df038a690a488580d758681370
- Fix calculation on which side to apply dimming.
- Fix dismissing parallax logic for new resize handling.
- Remove wrong/unnecessary resizeStack call
Bug: 27738239
Change-Id: Iaac671ca03e19aa70fa779d319b5fe84ff3b40ba
Add a callback to TaskStackChangeListener which gets fired when the system
might need to inform the user that a specific app might not work in
multi-window.
Use that callback in SysUI to show a translucent activity which scrims the
activity behind to inform that it might not be resizable.
Debounce the information to once per multi-window session, to not make it
annoying.
Introduce launchTaskId to start an activity in an existing task, and protect
that with START_TASKS_FROM_RECENTS permission.
Bug: 27327287
Bug: 27431869
Change-Id: I89e8d653872ab01ba3c1e252b426e5481da0e6ca
This reverts commit 50cd6361d7.
Now resize happens only after the divider is released, so these changes are
no longer needed.
This also fixes resize of 'non-docked' stack in split-screen during dragging
the divider: minimizeHoles was setting incorrect 'taskPositionOther' value
which lead to incorrect insets.
Bug: 27621228
Change-Id: Iec8dc977296e204b206954847dddfc159f498930
To reduced jank during resizing we now only resize the task
when the split-screen divider is release vs always resizing
it to the snap points.
Bug: 27738239
Bug: 27676101
Bug: 27601572
Change-Id: Iad450842d82193bc1731729834339068cf2d3e83
Adds tap affordance that moves all tasks of the docked
stack into the fullscreen stack as well as moves the top task
of the fullscreen stack into the docked stack.
Also make sure not to trigger focus switch when tapping the divider
handle. For that, add a method so SysUI can specify the touchable
region which then gets excludes for the focus switch touch region.
Bug: 27358134
Change-Id: I34f39c53cacc0b9c00f87a792b88c3f64a5f61e1
- Don't move recents window around during the animation
- Set the correct task size shortly after docking, so recents
starts with the correct size to avoid jank.
- Add staggered animation in recents.
Bug: 27154882
Change-Id: I7c56102feba9c3f6cb86cb5f1d87f0ad3b29c721
Makes sure we don't end up in a weird state because
at the end of the fling animation, mDockSide gets
reset.
Bug: 27269044
Change-Id: I779b8ee9be9a35553c7f822421d1f02ca802111c
- We keep the docked stack visible when home task is visible even
though it's not resizable.
- We introduce the a new concept called "minimizing" the docked stack,
which happens when going home. In this state, the docked stack is
clipped of almost completely.
- To achieve that, we introduce TaskStackBoundsAdjustController,
which adjusts the bounds of the docked stack when minimized. Also,
migrate the IME handling to this new class.
- We also need to inform SysUI that it is now minimized so it can
remove the drag affordance on the divider, and also make it a bit
smaller.
- When we detect an app transition, we check whether the home stack
gets visible/invisible. We then start an animation which runs in
sync with the normal app transition. For that we introduce
DockedStackDividerController.animate(), which performs the animation.
Bug: 27137961
Change-Id: I8623bc73cc6872bf28c5b1b8d5795974576811b2
- Make sure divider is pushing frames only if necessary
- When starting recents while docking, make sure no unnecessary
animations are played to reduce system load.
Change-Id: I536f009aef7282ed85dde79b853aeae62644f3e3
When long pressing on the recents button, we made it one pixel smaller
than fullscreen so we don't dismiss the stack immediately again.
However, this is a huge hack, and lead to problems with navigation bar
background because there we actually rely on the fact whether
the window is fullscreen or not to determine whether to draw the
navigation bar background, which lead to flickering.
Bug: 26777526
Change-Id: Ifdfcf3ad4138bc88c5164177cd20f1ff1635085f
When dragging the divider in a way such the task size goes through
the following transition
- Half size
- Full screen
- Half size
the surface wasn't clipped off anymore. This was because in full
screen configuration, computeDragResizing() == false thus when
going full screen -> half size, we reset the draw state to
DRAW_PENDING to get notified when it has finished drawn. However,
this also broke clipping.
In order to fix this, we always put the window into a resizing mode
no matter whether the bounds are fullscreen or not.
However, this introduces an ugly flickering on the navigation bar,
when going into docked mode, because the app doesn't draw navigation
bar background in resize mode.
To fix that, we calculate the presence of navigation bar whether the
window is fullscreen, and not just whether it's resizing. For that,
we need to calculate the presence in BackdropFrameRenderer, by using
the insets just sent by window manager.
Change-Id: Idf56df4ae7fefe67d068bc2eeda8dc4d83bbefb7
- Take insets into account for calculating dismissing fraction,
but don't dim into 100% when the device has insets at that
side.
- When applying parallax to the top side, apply less.
Change-Id: Id1af37e6f7af43ec3682dad4ad1ce68034301b4d
This introduces animating of stack bounds within window manager
module. It also uses this type of animation when moving an activity from
fullscreen stack to pinned stack.
Bug: 25672053
Change-Id: I75914a685d10021f8a7535b47ef12b6920b3fd5e
- Make sure all methods in RecentsImpl are called from the main thread.
- On secondary users, call dockTopTask in correct process.
- When opening recents, split it differently when on phones.
Change-Id: I10224452b1a9c0ae691d64cceeae5bb93cc4f6d8
- Switch earlier to the dismissing/fullscreen layout, so
we minimize holes.
- For the bottom/right one, switch also earlier to the larger size to
minimize holes. We can't do this for the upper one because it will be
confusing there if the layout bounds doesn't equal the bounds while
snapping.
Change-Id: I8f065514f7aaa15ae76af648794ab8b23302e534