-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Overhaul view transations #117
Comments
Okay, so I think I have a plan:
|
One alternative I'd like to bring up in case this comes back to haunt me in the future: A simpler alternative is to just scrap the animation when opening the overview and using a transactional transition triggered by a double-tap on the gesture handle instead. |
Slight change of plans: We are not going to remove focus when entering the overview. This allows us to avoid all the special-cased logic of not reaping certain layer shell windows while in the overview and will ensure that going back to the current layout will be flicker-free. One drawback of this is that opening any other application will now require a resize since the virtual keyboard is initially still open. The best solution to that seems to be killing the virtual keyboard, potentially through some IME special-case handling, to ensure that its removal is included in the transaction to switch to the new layout. In theory the virtual keyboard does not need to be killed, since a focus loss will automatically cause it to be unmapped. So it would be possible to just mark it as "dead" and wait for reaping. However this is likely to prove unreliable and ideally it should be manually closed, potentially through |
This new approach also allows splitting up the implementation a bit better. The synchronization of the virtual keyboard being killed when leaving the overview can be handled separately, while this issue should focus on getting the transition into the overview ironed out. Follow-up for virtual keyboard: #118 |
Currently transitions between the different views are handled by transactions. This causes an issue with the transition to the overview since the
on_gesture
andon_gesture_done
methods check for the current view, rather than the pending view. As a result, it's possible that the overview is entered, but it's stuck in the transitory state where the primary percentage is stuck at 100%.The simplest solution would be to use the pending view instead, ensuring that the transactional state is taken into account. However this could cause the transition to the overview to be delayed for up to one second which is not acceptable now that the overview transition is animated.
The best solution that comes to my mind is to remove all transactionality from the view transitions and ensure they only rely on moving windows around, rather than resizing them.
One important part of this is to remove the
available_overview
method that removes the exclusive zones from top/overlay layer shell windows. These windows should likely also be rendered in the overview again. To ensure applications likeEpitaph
don't interfere with the overview it should be ensured they still receive touch input.TBD:
The text was updated successfully, but these errors were encountered: