fix: leaving canvas now tiles all windows back properly

This commit is contained in:
ernestoCruz05 2026-03-28 16:39:48 +00:00
parent 8fb28abdb4
commit 1e217af3d9
2 changed files with 13 additions and 0 deletions

View file

@ -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;

View file

@ -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;
}
}