From fc7311585c3fa9cc78838e83adb7bae1ea0fce0b Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Fri, 4 Jul 2025 12:51:55 +0800 Subject: [PATCH] opt: optimize window size when setfloating --- src/maomao.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/maomao.c b/src/maomao.c index d4a062d..ef23986 100644 --- a/src/maomao.c +++ b/src/maomao.c @@ -6058,6 +6058,7 @@ setfloating(Client *c, int floating) { int hit; struct wlr_box target_box, backup_box; c->isfloating = floating; + bool window_size_outofrange = false; if (!c || !c->mon || !client_surface(c)->mapped || c->iskilling) return; @@ -6089,6 +6090,17 @@ setfloating(Client *c, int floating) { // restore to the memeroy geom if (c->oldgeom.width > 0 && c->oldgeom.height > 0) { + if (c->mon && c->oldgeom.width >= c->mon->w.width - gappoh) { + c->oldgeom.width = c->mon->w.width * 0.9; + window_size_outofrange = true; + } + if (c->mon && c->oldgeom.height >= c->mon->w.height - gappov) { + c->oldgeom.height = c->mon->w.height * 0.9; + window_size_outofrange = true; + } + if (window_size_outofrange) { + c->oldgeom = setclient_coordinate_center(c, c->oldgeom, 0, 0); + } resize(c, c->oldgeom, 0); } else { resize(c, target_box, 0);