opt: optimize fullscreen fakefullscreen and maximizescreen state convert

This commit is contained in:
DreamMaoMao 2025-08-03 07:43:00 +08:00
parent e18839ec11
commit c5591950e5
2 changed files with 17 additions and 12 deletions

View file

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

View file

@ -845,13 +845,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) {
@ -4049,6 +4049,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) {
@ -4066,8 +4070,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);
@ -4080,7 +4082,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) // 用自定义全屏代理自带全屏
@ -4104,6 +4107,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) {
@ -4119,8 +4125,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);