fix: noboder rule miss apply

This commit is contained in:
DreamMaoMao 2025-05-13 09:35:12 +08:00
parent 73750ecea6
commit a19aa3d471

View file

@ -1090,7 +1090,7 @@ void apply_border(Client *c, struct wlr_box clip_box, int offsetx,
return; return;
} else if(!c->isfullscreen && VISIBLEON(c, c->mon)) { } else if(!c->isfullscreen && VISIBLEON(c, c->mon)) {
c->bw = borderpx; c->bw = c->isnoborder ? 0 : borderpx;
} }
wlr_scene_node_set_position(&c->scene_surface->node, c->bw, c->bw); wlr_scene_node_set_position(&c->scene_surface->node, c->bw, c->bw);
@ -1307,7 +1307,7 @@ void clear_fullscreen_flag(Client *c) {
c->isfullscreen = 0; c->isfullscreen = 0;
c->isfloating = 0; c->isfloating = 0;
c->ismaxmizescreen = 0; c->ismaxmizescreen = 0;
c->bw = borderpx; c->bw = c->isnoborder ? 0 : borderpx;
client_set_fullscreen(c, false); client_set_fullscreen(c, false);
} }
} }
@ -1364,7 +1364,7 @@ void show_scratchpad(Client *c) {
if (c->isfullscreen || c->ismaxmizescreen) { if (c->isfullscreen || c->ismaxmizescreen) {
c->isfullscreen = 0; // 清除窗口全屏标志 c->isfullscreen = 0; // 清除窗口全屏标志
c->ismaxmizescreen = 0; c->ismaxmizescreen = 0;
c->bw = borderpx; // 恢复非全屏的border c->bw = c->isnoborder ? 0 : borderpx;
} }
if (c->oldgeom.width) if (c->oldgeom.width)
@ -5291,7 +5291,7 @@ setfloating(Client *c, int floating) {
if (c->isfullscreen || c->ismaxmizescreen) { if (c->isfullscreen || c->ismaxmizescreen) {
c->isfullscreen = 0; // 清除窗口全屏标志 c->isfullscreen = 0; // 清除窗口全屏标志
c->ismaxmizescreen = 0; c->ismaxmizescreen = 0;
c->bw = borderpx; // 恢复非全屏的border c->bw = c->isnoborder ? 0 : borderpx;
} }
if (c->need_float_size_reduce && !c->swallowing && !c->is_open_animation) { if (c->need_float_size_reduce && !c->swallowing && !c->is_open_animation) {
@ -5370,7 +5370,7 @@ void setmaxmizescreen(Client *c, int maxmizescreen) {
resize(c, maxmizescreen_box, 0); resize(c, maxmizescreen_box, 0);
c->ismaxmizescreen = 1; c->ismaxmizescreen = 1;
} else { } else {
c->bw = borderpx; c->bw = c->isnoborder ? 0 : borderpx;
c->ismaxmizescreen = 0; c->ismaxmizescreen = 0;
c->isfullscreen = 0; c->isfullscreen = 0;
client_set_fullscreen(c, false); client_set_fullscreen(c, false);
@ -5420,7 +5420,7 @@ void setfullscreen(Client *c, int fullscreen) // 用自定义全屏代理自带
c->isfullscreen = 1; c->isfullscreen = 1;
// c->isfloating = 0; // c->isfloating = 0;
} else { } else {
c->bw = borderpx; c->bw = c->isnoborder ? 0 : borderpx;
c->isfullscreen = 0; c->isfullscreen = 0;
c->isfullscreen = 0; c->isfullscreen = 0;
c->ismaxmizescreen = 0; c->ismaxmizescreen = 0;
@ -6149,14 +6149,10 @@ void overview_backup(Client *c) {
c->isfloating = 0; c->isfloating = 0;
} }
if (c->isfullscreen || c->ismaxmizescreen) { if (c->isfullscreen || c->ismaxmizescreen) {
// if (c->bw == 0) { // 真全屏窗口清除x11全屏属性
// XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32,
// PropModeReplace, (unsigned char *)0, 0);
// }
c->isfullscreen = 0; // 清除窗口全屏标志 c->isfullscreen = 0; // 清除窗口全屏标志
c->ismaxmizescreen = 0; c->ismaxmizescreen = 0;
} }
c->bw = borderpx; // 恢复非全屏的border c->bw = c->isnoborder ? 0 : borderpx;
} }
// overview切回到普通视图还原窗口的状态 // overview切回到普通视图还原窗口的状态
@ -6190,9 +6186,9 @@ void overview_restore(Client *c, const Arg *arg) {
} }
} }
if (c->bw == 0 && !c->isnoborder && if (c->bw == 0 &&
!c->isfullscreen) { // 如果是在ov模式中创建的窗口,没有bw记录 !c->isfullscreen) { // 如果是在ov模式中创建的窗口,没有bw记录
c->bw = borderpx; c->bw = c->isnoborder ? 0 : borderpx;
} }
} }