Skip to content

Drop resize effect

Vlad Zahorodnii requested to merge work/zzag/drop-resize-effect into master

After recent refactor changes to improve resizing of xdg-toplevel surfaces with an aspect ratio, the resize effect got really broken. The resize effect has always been a problem child on wayland.

Unlike X11, geometry updates are performed asynchronously on Wayland. It's not possible to have a smooth transition after finishing interactive resize from the resized state to the normal state, geometry will jump from last moveResizeGeometry() to the current frameGeometry() and when the client repaints the window, the window size will jump back to the move resize geometry size. There are no ways to fix that without contradicting to how the effect is advertised to work, e.g. sending configure events behind the back. Keeping the frame geometry out of sync with the xdg_surface window geometry size is also not the option, geometry updates are already too complex (due to being async).

Another wayland related issue with the resize effect is that the compositor doesn't know about aspect ratio or any other size constraints, except min and max size. The client can provide a smaller buffer to account for various geometry constraints. It will be confusing to have a mismatch between resize outline and the final real geometry. Aspect ratio or other geometry constraints won't be exposed to the compositor, it's a common decision of many wayland devs (including KDE).

To some extent, the wayland issues can be addressed by performing content updates, with active feedback, the mismatch between outline and the final geometry would become less severe, but it won't be any different than resizing without the effect.

Given the wayland issues and in part maintenance costs, this change drops the resize effect. Note that it can be still reimplemented without kwin core changes, but it would still suffer from the aforementioned issues.

Merge request reports