From 49dc55d4f044456d3787b97e2a93d0c0563142c3 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Tue, 23 Jan 2024 08:54:02 -0500 Subject: [PATCH] interactive: unify interactive_{cancel,finish} where possible This also fixes a bug wherein dragging a window and pressing a hot-key to maximize or fullscreen a window could leave a snap-region highlight visible after the interactive move was canceled. --- src/interactive.c | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/interactive.c b/src/interactive.c index 0a4e1818..b09ba01c 100644 --- a/src/interactive.c +++ b/src/interactive.c @@ -196,24 +196,18 @@ snap_to_region(struct view *view) void interactive_finish(struct view *view) { - if (view->server->grabbed_view == view) { - regions_hide_overlay(&view->server->seat); - if (view->server->input_mode == LAB_INPUT_STATE_MOVE) { - if (!snap_to_region(view)) { - if (!snap_to_edge(view)) { - /* Reset tiled state if not snapped */ - view_set_untiled(view); - } - } - } - resize_indicator_hide(view); - - view->server->input_mode = LAB_INPUT_STATE_PASSTHROUGH; - view->server->grabbed_view = NULL; - - /* Update focus/cursor image */ - cursor_update_focus(view->server); + if (view->server->grabbed_view != view) { + return; } + + if (view->server->input_mode == LAB_INPUT_STATE_MOVE) { + /* Reset tiled state if not snapped */ + if (!snap_to_region(view) && !snap_to_edge(view)) { + view_set_untiled(view); + } + } + + interactive_cancel(view); } /* @@ -224,11 +218,17 @@ interactive_finish(struct view *view) void interactive_cancel(struct view *view) { - if (view->server->grabbed_view == view) { - resize_indicator_hide(view); - view->server->input_mode = LAB_INPUT_STATE_PASSTHROUGH; - view->server->grabbed_view = NULL; - /* Update focus/cursor image */ - cursor_update_focus(view->server); + if (view->server->grabbed_view != view) { + return; } + + regions_hide_overlay(&view->server->seat); + + resize_indicator_hide(view); + + view->server->input_mode = LAB_INPUT_STATE_PASSTHROUGH; + view->server->grabbed_view = NULL; + + /* Update focus/cursor image */ + cursor_update_focus(view->server); }