From 5ce98bb88ef249280e5edb495721a80428dbc44e Mon Sep 17 00:00:00 2001 From: Leonhard Date: Wed, 12 Aug 2026 18:25:01 +0200 Subject: [PATCH 1/2] Handle grab op in WindowMenuManager --- src/Misc/WindowMenuManager.vala | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/Misc/WindowMenuManager.vala b/src/Misc/WindowMenuManager.vala index 8427d016e..4101ef8a0 100644 --- a/src/Misc/WindowMenuManager.vala +++ b/src/Misc/WindowMenuManager.vala @@ -180,11 +180,27 @@ public class Gala.WindowMenuManager : Object { } private void on_move (SimpleAction action, Variant? parameters) { - wm.perform_action (START_MOVE_CURRENT); + begin_grab_op (KEYBOARD_MOVING); } private void on_resize (SimpleAction action, Variant? parameters) { - wm.perform_action (START_RESIZE_CURRENT); + begin_grab_op (KEYBOARD_RESIZING_UNKNOWN); + } + + private void begin_grab_op (Meta.GrabOp op) { +#if HAS_MUTTER49 + var device = Clutter.get_default_backend ().get_pointer_sprite (wm.stage); +#else + var device = Clutter.get_default_backend ().get_default_seat ().get_pointer (); +#endif + + current_window.begin_grab_op ( + op, device, +#if !HAS_MUTTER49 + null, +#endif + wm.get_display ().get_current_time (), null + ); } private void on_maximize (SimpleAction action, Variant? parameters) { From 097ff0093ff22d9e4440914f06d19dcdcad976d2 Mon Sep 17 00:00:00 2001 From: Leonhard Date: Wed, 12 Aug 2026 18:26:21 +0200 Subject: [PATCH 2/2] Deprecate now unused actions --- src/WindowManager.vala | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/src/WindowManager.vala b/src/WindowManager.vala index ed455cba1..3f5b36320 100644 --- a/src/WindowManager.vala +++ b/src/WindowManager.vala @@ -605,35 +605,6 @@ namespace Gala { }); } - private void set_grab_trigger (Meta.Window window, Meta.GrabOp op) { - var proxy = push_modal (stage, true); - - ulong handler = 0; - handler = stage.captured_event.connect ((event) => { - if (event.get_type () == MOTION || event.get_type () == ENTER || - event.get_type () == TOUCHPAD_HOLD || event.get_type () == TOUCH_BEGIN) { - window.begin_grab_op ( - op, - null, -#if !HAS_MUTTER49 - event.get_event_sequence (), -#endif - event.get_time () - , null - ); - } else if (event.get_type () == LEAVE) { - /* We get leave emitted when beginning a grab op, so we have - to filter it in order to avoid disconnecting and popping twice */ - return Clutter.EVENT_PROPAGATE; - } - - pop_modal (proxy); - stage.disconnect (handler); - - return Clutter.EVENT_PROPAGATE; - }); - } - /** * {@inheritDoc} */ @@ -672,12 +643,10 @@ namespace Gala { current.minimize (); break; case ActionType.START_MOVE_CURRENT: - if (current != null && current.allows_move ()) - set_grab_trigger (current, KEYBOARD_MOVING); + warning ("Action START_MOVE_CURRENT is deprecated"); break; case ActionType.START_RESIZE_CURRENT: - if (current != null && current.allows_resize ()) - set_grab_trigger (current, KEYBOARD_RESIZING_UNKNOWN); + warning ("Action START_RESIZE_CURRENT is deprecated"); break; case ActionType.TOGGLE_ALWAYS_ON_TOP_CURRENT: if (current == null)