From e6b7dcb60d0774acbc5ad41c27f5e03a1dc1a601 Mon Sep 17 00:00:00 2001 From: mateoalfaro Date: Fri, 4 Sep 2026 13:33:30 -0600 Subject: [PATCH] fix: guard tiling preview without grabbed view --- src/interactive.c | 7 ++++++- src/protocols/singularity-tiling.c | 4 ++++ src/regions.c | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/interactive.c b/src/interactive.c index f2bb853054..203f562309 100644 --- a/src/interactive.c +++ b/src/interactive.c @@ -212,7 +212,12 @@ edge_from_cursor(struct seat *seat, struct output **dest_output, *edge1 = LAB_EDGE_NONE; *edge2 = LAB_EDGE_NONE; - if (!view_is_floating(server.grabbed_view)) { + /* + * Overlay updates can also be requested by compositor protocols while no + * interactive move is active. In that case there is no edge-snap + * candidate. Do not pass the NULL grabbed view to view_is_floating(). + */ + if (!server.grabbed_view || !view_is_floating(server.grabbed_view)) { return false; } diff --git a/src/protocols/singularity-tiling.c b/src/protocols/singularity-tiling.c index d66a49edef..d7ce5536b5 100644 --- a/src/protocols/singularity-tiling.c +++ b/src/protocols/singularity-tiling.c @@ -115,6 +115,10 @@ handle_set_drop_preview(struct wl_client *client, struct wl_resource *resource, .width = width, .height = height, }; + if (!manager->drop_preview_active) { + overlay_finish(&server.seat); + return; + } overlay_update(&server.seat); } diff --git a/src/regions.c b/src/regions.c index 9f195723f4..ebb8e180a6 100644 --- a/src/regions.c +++ b/src/regions.c @@ -22,6 +22,7 @@ regions_should_snap(void) if (server.input_mode != LAB_INPUT_STATE_MOVE || wl_list_empty(&rc.regions) || server.seat.region_prevent_snap + || !server.grabbed_view || !view_is_floating(server.grabbed_view)) { return false; } @@ -170,4 +171,3 @@ regions_destroy(struct seat *seat, struct wl_list *regions) zfree(region); } } -