From 1e217af3d90c8993a5cb613ea6e8e488bb44a452 Mon Sep 17 00:00:00 2001 From: ernestoCruz05 Date: Sat, 28 Mar 2026 16:39:48 +0000 Subject: [PATCH] fix: leaving canvas now tiles all windows back properly --- src/layout/arrange.h | 10 ++++++++++ src/mango.c | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/layout/arrange.h b/src/layout/arrange.h index f29a6f4a..3b8dbf31 100644 --- a/src/layout/arrange.h +++ b/src/layout/arrange.h @@ -815,6 +815,16 @@ void pre_caculate_before_arrange(Monitor *m, bool want_animation, int32_t stack_num = 0; bool is_canvas = m->pertag->ltidxs[m->pertag->curtag]->id == CANVAS; + if (!is_canvas) { + wl_list_for_each(c, &clients, link) { + if (VISIBLEON(c, m) && c->canvas_floating) { + c->isfloating = 0; + c->canvas_floating = false; + clear_visual_zoom(c); + } + } + } + m->visible_clients = 0; m->visible_tiling_clients = 0; m->visible_scroll_tiling_clients = 0; diff --git a/src/mango.c b/src/mango.c index 5bd60b7b..425150c4 100644 --- a/src/mango.c +++ b/src/mango.c @@ -399,6 +399,7 @@ struct Client { pid_t pid; Client *swallowing, *swallowedby; bool is_clip_to_hide; + bool canvas_floating; bool drag_to_tile; bool scratchpad_switching_mon; bool fake_no_border; @@ -1488,6 +1489,8 @@ void check_match_tag_floating_rule(Client *c, Monitor *mon) { (mon->pertag->open_as_floating[get_tags_first_tag_num(c->tags)] || mon->pertag->ltidxs[mon->pertag->curtag]->id == CANVAS)) { c->isfloating = 1; + if (mon->pertag->ltidxs[mon->pertag->curtag]->id == CANVAS) + c->canvas_floating = true; } }