From 0d8aedf691bb740290ad5c447d157a8d26a35ffe Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Sun, 15 Mar 2026 23:26:16 +0800 Subject: [PATCH] fix: shouldn't arrange the closing monitor --- src/layout/arrange.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/layout/arrange.h b/src/layout/arrange.h index 87217c7b..04f4554b 100644 --- a/src/layout/arrange.h +++ b/src/layout/arrange.h @@ -15,6 +15,9 @@ void restore_size_per(Monitor *m, Client *c) { if (!m || !c) return; + if (!m->wlr_output->enabled) + return; + wl_list_for_each(fc, &clients, link) { if (VISIBLEON(fc, m) && ISTILED(fc)) { fc->old_ismaster = fc->ismaster; @@ -811,11 +814,6 @@ void pre_caculate_before_arrange(Monitor *m, bool want_animation, int32_t master_num = 0; int32_t stack_num = 0; - if (!m) - return; - - if (!m->wlr_output->enabled) - return; m->visible_clients = 0; m->visible_tiling_clients = 0; m->visible_scroll_tiling_clients = 0; @@ -912,6 +910,12 @@ void pre_caculate_before_arrange(Monitor *m, bool want_animation, void // 17 arrange(Monitor *m, bool want_animation, bool from_view) { + if (!m) + return; + + if (!m->wlr_output->enabled) + return; + pre_caculate_before_arrange(m, want_animation, from_view, false); if (m->isoverview) {