mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-11-05 13:29:54 -05:00
fix: error surface size clip when no animation
This commit is contained in:
parent
139c3c484b
commit
eaba32056b
1 changed files with 19 additions and 10 deletions
29
src/maomao.c
29
src/maomao.c
|
|
@ -1276,23 +1276,40 @@ void client_apply_clip(Client *c) {
|
||||||
float opacity = c->isfullscreen ? 1
|
float opacity = c->isfullscreen ? 1
|
||||||
: c == selmon->sel ? c->focused_opacity
|
: c == selmon->sel ? c->focused_opacity
|
||||||
: c->unfocused_opacity;
|
: c->unfocused_opacity;
|
||||||
|
int bottom_out_offset =
|
||||||
|
GEZERO(c->animation.current.y - c->animation.current.height -
|
||||||
|
c->mon->m.y - c->mon->m.height);
|
||||||
|
int right_out_offset =
|
||||||
|
GEZERO(c->animation.current.x + c->animation.current.width -
|
||||||
|
c->mon->m.x - c->mon->m.width);
|
||||||
|
int bw = (int)c->bw;
|
||||||
|
|
||||||
if (!animations) {
|
if (!animations) {
|
||||||
c->animation.running = false;
|
c->animation.running = false;
|
||||||
c->need_output_flush = false;
|
c->need_output_flush = false;
|
||||||
c->animainit_geom = c->current = c->pending = c->animation.current =
|
c->animainit_geom = c->current = c->pending = c->animation.current =
|
||||||
c->geom;
|
c->geom;
|
||||||
|
|
||||||
client_get_clip(c, &clip_box);
|
client_get_clip(c, &clip_box);
|
||||||
|
|
||||||
offset = clip_to_hide(c, &clip_box);
|
offset = clip_to_hide(c, &clip_box);
|
||||||
|
|
||||||
|
bottom_out_offset =
|
||||||
|
GEZERO(c->animation.current.y - c->animation.current.height -
|
||||||
|
c->mon->m.y - c->mon->m.height);
|
||||||
|
right_out_offset =
|
||||||
|
GEZERO(c->animation.current.x + c->animation.current.width -
|
||||||
|
c->mon->m.x - c->mon->m.width);
|
||||||
|
|
||||||
apply_border(c);
|
apply_border(c);
|
||||||
|
|
||||||
client_draw_shadow(c);
|
client_draw_shadow(c);
|
||||||
|
|
||||||
surface_clip = clip_box;
|
surface_clip = clip_box;
|
||||||
surface_clip.width = surface_clip.width - c->bw;
|
surface_clip.width = surface_clip.width - GEZERO(bw - right_out_offset);
|
||||||
surface_clip.height = surface_clip.height - c->bw;
|
surface_clip.height =
|
||||||
|
surface_clip.height - GEZERO(bw - bottom_out_offset);
|
||||||
|
|
||||||
scale_data.opacity = c->isfullscreen ? 1
|
scale_data.opacity = c->isfullscreen ? 1
|
||||||
: c == selmon->sel ? c->focused_opacity
|
: c == selmon->sel ? c->focused_opacity
|
||||||
: c->unfocused_opacity;
|
: c->unfocused_opacity;
|
||||||
|
|
@ -1329,14 +1346,6 @@ void client_apply_clip(Client *c) {
|
||||||
|
|
||||||
apply_border(c);
|
apply_border(c);
|
||||||
|
|
||||||
int bottom_out_offset =
|
|
||||||
GEZERO(c->animation.current.y - c->animation.current.height -
|
|
||||||
c->mon->m.y - c->mon->m.height);
|
|
||||||
int right_out_offset =
|
|
||||||
GEZERO(c->animation.current.x + c->animation.current.width -
|
|
||||||
c->mon->m.x - c->mon->m.width);
|
|
||||||
int bw = (int)c->bw;
|
|
||||||
|
|
||||||
surface_clip = clip_box;
|
surface_clip = clip_box;
|
||||||
surface_clip.width = surface_clip.width - GEZERO(bw - right_out_offset);
|
surface_clip.width = surface_clip.width - GEZERO(bw - right_out_offset);
|
||||||
surface_clip.height = surface_clip.height - GEZERO(bw - bottom_out_offset);
|
surface_clip.height = surface_clip.height - GEZERO(bw - bottom_out_offset);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue