From cf3cd6fe3f7f420c538d3abc89b2cedccf0c3ec6 Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Fri, 10 Oct 2025 07:50:55 +0800 Subject: [PATCH] fix: fix layout switch before resize --- src/mango.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/mango.c b/src/mango.c index 104a5ba..e13f1c2 100644 --- a/src/mango.c +++ b/src/mango.c @@ -3617,13 +3617,22 @@ void init_client_properties(Client *c) { void set_size_per(Monitor *m, Client *c) { Client *fc = NULL; + bool found = false; wl_list_for_each(fc, &clients, link) { if (VISIBLEON(fc, m) && ISTILED(fc) && fc != c) { c->master_width_per = fc->master_width_per; c->master_height_per = fc->master_height_per; c->slave_height_per = fc->slave_height_per; + found = true; + break; } } + + if(!found) { + c->master_width_per = 0.5f; + c->master_height_per = 1.0f; + c->slave_height_per = 1.0f; + } } void // old fix to 0.5 @@ -3935,13 +3944,13 @@ void resize_tile_client(Client *grabc) { } else { delta_y = fabsf(delta_y); } - } else if(grabc->ismaster && !next->ismaster) { + } else if(grabc->ismaster && next && !next->ismaster) { if(moving_up) { delta_y = fabsf(delta_y); } else { delta_y = -fabsf(delta_y); } - } else if(!grabc->ismaster && prev->ismaster) { + } else if(!grabc->ismaster && prev && prev->ismaster) { if(moving_up) { delta_y = -fabsf(delta_y); } else {