]> git.mdlowis.com Git - proto/labwc.git/commitdiff
interactive: unify interactive_{cancel,finish} where possible
authorAndrew J. Hesford <ajh@sideband.org>
Tue, 23 Jan 2024 13:54:02 +0000 (08:54 -0500)
committerAndrew J. Hesford <48421688+ahesford@users.noreply.github.com>
Tue, 23 Jan 2024 15:11:52 +0000 (10:11 -0500)
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

index 0a4e1818c2f8ac8677517e1db2cd2846e6e0ab58..b09ba01cd5c63ed791d9e041d3d5b7bcd10f0672 100644 (file)
@@ -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;
+       if (view->server->grabbed_view != view) {
+               return;
+       }
 
-               /* Update focus/cursor image */
-               cursor_update_focus(view->server);
+       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);
 }