mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-10-29 05:40:21 -04:00
fix: border offset error by clip_box in clip_to_hide func
fix:clip_box error offset fix: miss border pos set
This commit is contained in:
parent
a2befaf5e7
commit
483ee706a0
1 changed files with 24 additions and 9 deletions
33
src/maomao.c
33
src/maomao.c
|
|
@ -1058,6 +1058,14 @@ void apply_border(Client *c, struct wlr_box clip_box, int offsetx,
|
||||||
if (c->iskilling || !client_surface(c)->mapped)
|
if (c->iskilling || !client_surface(c)->mapped)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if(clip_box.width > c->animation.current.width) {
|
||||||
|
clip_box.width = c->animation.current.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(clip_box.height > c->animation.current.height) {
|
||||||
|
clip_box.height = c->animation.current.height;
|
||||||
|
}
|
||||||
|
|
||||||
if(!render_border) {
|
if(!render_border) {
|
||||||
set_rect_size(c->border[0], 0, 0);
|
set_rect_size(c->border[0], 0, 0);
|
||||||
set_rect_size(c->border[1], 0, 0);
|
set_rect_size(c->border[1], 0, 0);
|
||||||
|
|
@ -1094,22 +1102,21 @@ void apply_border(Client *c, struct wlr_box clip_box, int offsetx,
|
||||||
clip_box.height - 2 * c->bw);
|
clip_box.height - 2 * c->bw);
|
||||||
} else if (c->animation.current.x + c->animation.current.width >
|
} else if (c->animation.current.x + c->animation.current.width >
|
||||||
c->mon->m.x + c->mon->m.width) {
|
c->mon->m.x + c->mon->m.width) {
|
||||||
set_rect_size(c->border[3], GEZERO(c->bw - offsetx),
|
set_rect_size(c->border[3], GEZERO(c->bw - (c->animation.current.x + c->animation.current.width - c->mon->m.x + c->mon->m.width)),
|
||||||
clip_box.height - 2 * c->bw);
|
clip_box.height - 2 * c->bw);
|
||||||
} else if (c->animation.current.y < c->mon->m.y) {
|
} else if (c->animation.current.y < c->mon->m.y) {
|
||||||
set_rect_size(c->border[0], clip_box.width, GEZERO(c->bw - offsety));
|
set_rect_size(c->border[0], clip_box.width, GEZERO(c->bw - offsety));
|
||||||
} else if (c->animation.current.y + c->animation.current.height >
|
} else if (c->animation.current.y + c->animation.current.height >
|
||||||
c->mon->m.y + c->mon->m.height) {
|
c->mon->m.y + c->mon->m.height) {
|
||||||
set_rect_size(c->border[1], clip_box.width, GEZERO(c->bw - offsety));
|
set_rect_size(c->border[1], clip_box.width, GEZERO(c->bw - (c->animation.current.y + c->animation.current.height - c->mon->m.y + c->mon->m.height)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_scene_node_set_position(&c->border[0]->node, offsetx, offsety);
|
wlr_scene_node_set_position(&c->border[0]->node, offsetx, offsety);
|
||||||
wlr_scene_node_set_position(&c->border[2]->node, offsetx, c->bw + offsety);
|
wlr_scene_node_set_position(&c->border[2]->node, offsetx, c->bw + offsety);
|
||||||
wlr_scene_node_set_position(&c->border[1]->node, offsetx,
|
wlr_scene_node_set_position(&c->border[1]->node, offsetx, clip_box.height - c->bw + offsety);
|
||||||
clip_box.height - c->bw + offsety);
|
wlr_scene_node_set_position(&c->border[3]->node, clip_box.width - c->bw + offsetx,
|
||||||
wlr_scene_node_set_position(
|
c->bw + offsety);
|
||||||
&c->border[3]->node, clip_box.width - c->bw + offsetx, c->bw + offsety);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct uvec2 clip_to_hide(Client *c, struct wlr_box *clip_box) {
|
struct uvec2 clip_to_hide(Client *c, struct wlr_box *clip_box) {
|
||||||
|
|
@ -1127,7 +1134,7 @@ struct uvec2 clip_to_hide(Client *c, struct wlr_box *clip_box) {
|
||||||
if (ISTILED(c) || c->animation.tagining || c->animation.tagouted ||
|
if (ISTILED(c) || c->animation.tagining || c->animation.tagouted ||
|
||||||
c->animation.tagouting) {
|
c->animation.tagouting) {
|
||||||
if (c->animation.current.x <= c->mon->m.x) {
|
if (c->animation.current.x <= c->mon->m.x) {
|
||||||
offsetx = c->mon->m.x - c->animation.current.x - c->bw;
|
offsetx = GEZERO(c->mon->m.x - c->animation.current.x);
|
||||||
clip_box->x = clip_box->x + offsetx;
|
clip_box->x = clip_box->x + offsetx;
|
||||||
clip_box->width = clip_box->width - offsetx;
|
clip_box->width = clip_box->width - offsetx;
|
||||||
} else if (c->animation.current.x + c->animation.current.width >=
|
} else if (c->animation.current.x + c->animation.current.width >=
|
||||||
|
|
@ -1139,7 +1146,7 @@ struct uvec2 clip_to_hide(Client *c, struct wlr_box *clip_box) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->animation.current.y <= c->mon->m.y) {
|
if (c->animation.current.y <= c->mon->m.y) {
|
||||||
offsety = c->mon->m.y - c->animation.current.y - c->bw;
|
offsety = GEZERO(c->mon->m.y - c->animation.current.y);
|
||||||
clip_box->y = clip_box->y + offsety;
|
clip_box->y = clip_box->y + offsety;
|
||||||
clip_box->height = clip_box->height - offsety;
|
clip_box->height = clip_box->height - offsety;
|
||||||
} else if (c->animation.current.y + c->animation.current.height >=
|
} else if (c->animation.current.y + c->animation.current.height >=
|
||||||
|
|
@ -1162,6 +1169,14 @@ struct uvec2 clip_to_hide(Client *c, struct wlr_box *clip_box) {
|
||||||
wlr_scene_node_set_enabled(&c->scene->node, true);
|
wlr_scene_node_set_enabled(&c->scene->node, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(clip_box->width > c->animation.current.width) {
|
||||||
|
clip_box->width = c->animation.current.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(clip_box->height > c->animation.current.height) {
|
||||||
|
clip_box->height = c->animation.current.height;
|
||||||
|
}
|
||||||
|
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue