wayland/xdg-toplevel-drag: Disable show/hide effects

This disables the visibility change effects for the dragged window,
which makes it feel a bit smoother.

TODO: Double-check whether this is indeed desirable. Note: ChromeOS imp
does this and Chromium-X11 used to do this at client side.

Status:

- [x] Basic window drag triggering
- [x] Exclude the dragged window from event targets
- [x] Event forwarding (window drag vs wayland grabs)
- [x] Offset calc relative to toplevel geometry
- [x] Attach already mapped windows
- [x] Properly support not-yet-mapped windows
- [x] Disable visibility change animations
- [ ] Dnd events stream adaptations

Signed-off-by: Nick Diego Yamane <nickdiego@igalia.com>
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4107>
This commit is contained in:
Nick Diego Yamane 2024-10-15 05:40:16 -04:00
parent 0111f0de14
commit 0c42ddefad

View File

@ -2473,6 +2473,9 @@ meta_window_show (MetaWindow *window)
break; break;
} }
if (meta_window_is_tied_to_drag (window))
effect = META_COMP_EFFECT_NONE;
meta_compositor_show_window (window->display->compositor, meta_compositor_show_window (window->display->compositor,
window, effect); window, effect);
window->pending_compositor_effect = META_COMP_EFFECT_NONE; window->pending_compositor_effect = META_COMP_EFFECT_NONE;
@ -2560,6 +2563,9 @@ meta_window_hide (MetaWindow *window)
break; break;
} }
if (meta_window_is_tied_to_drag (window))
effect = META_COMP_EFFECT_NONE;
meta_compositor_hide_window (window->display->compositor, window, effect); meta_compositor_hide_window (window->display->compositor, window, effect);
window->pending_compositor_effect = META_COMP_EFFECT_NONE; window->pending_compositor_effect = META_COMP_EFFECT_NONE;
} }