diff --git a/src/dispatch/bind_define.h b/src/dispatch/bind_define.h index bac2149..bdcd921 100644 --- a/src/dispatch/bind_define.h +++ b/src/dispatch/bind_define.h @@ -976,7 +976,7 @@ void togglefullscreen(const Arg *arg) { sel->is_in_scratchpad = 0; sel->isnamedscratchpad = 0; - if (sel->isfullscreen || sel->ismaxmizescreen) + if (sel->isfullscreen) setfullscreen(sel, 0); else setfullscreen(sel, 1); @@ -1011,7 +1011,7 @@ void togglemaxmizescreen(const Arg *arg) { sel->is_in_scratchpad = 0; sel->isnamedscratchpad = 0; - if (sel->isfullscreen || sel->ismaxmizescreen) + if (sel->ismaxmizescreen) setmaxmizescreen(sel, 0); else setmaxmizescreen(sel, 1); diff --git a/src/mango.c b/src/mango.c index b11d438..ffe9879 100644 --- a/src/mango.c +++ b/src/mango.c @@ -855,13 +855,13 @@ void applybounds(Client *c, struct wlr_box *bbox) { /*清除全屏标志,还原全屏时清0的border*/ void clear_fullscreen_flag(Client *c) { - if (c->isfullscreen || c->ismaxmizescreen) { - c->isfullscreen = 0; - c->isfloating = 0; - c->ismaxmizescreen = 0; - c->bw = c->isnoborder ? 0 : borderpx; + if (c->isfullscreen) { setfullscreen(c, false); } + + if (c->ismaxmizescreen) { + setmaxmizescreen(c, 0); + } } void minized(const Arg *arg) { @@ -3986,6 +3986,10 @@ void setmaxmizescreen(Client *c, int maxmizescreen) { : LyrTile]); if (maxmizescreen) { + + if (c->isfullscreen) + setfullscreen(c, 0); + if (c->isfloating) c->oldgeom = c->geom; if (selmon->isoverview) { @@ -4003,8 +4007,6 @@ void setmaxmizescreen(Client *c, int maxmizescreen) { } else { c->bw = c->isnoborder ? 0 : borderpx; c->ismaxmizescreen = 0; - c->isfullscreen = 0; - setfullscreen(c, false); if (c->isfloating) setfloating(c, 1); arrange(c->mon, false); @@ -4017,7 +4019,8 @@ void setfakefullscreen(Client *c, int fakefullscreen) { return; if (c->isfullscreen) setfullscreen(c, 0); - client_set_fullscreen(c, fakefullscreen); + else + client_set_fullscreen(c, fakefullscreen); } void setfullscreen(Client *c, int fullscreen) // 用自定义全屏代理自带全屏 @@ -4041,6 +4044,9 @@ void setfullscreen(Client *c, int fullscreen) // 用自定义全屏代理自带 } if (fullscreen) { + if (c->ismaxmizescreen) + setmaxmizescreen(c, 0); + if (c->isfloating) c->oldgeom = c->geom; if (selmon->isoverview) { @@ -4056,8 +4062,7 @@ void setfullscreen(Client *c, int fullscreen) // 用自定义全屏代理自带 } else { c->bw = c->isnoborder ? 0 : borderpx; c->isfullscreen = 0; - c->isfullscreen = 0; - c->ismaxmizescreen = 0; + c->isfakefullscreen = 0; if (c->isfloating) setfloating(c, 1); arrange(c->mon, false);