1
0
Fork 0
forked from wry/wry

it: fix integration geometry and tab scrolling

This commit is contained in:
atagen 2026-05-31 18:11:58 +10:00
parent b6502e1d8a
commit f777b4c521
30 changed files with 123 additions and 72 deletions

View file

@ -1520,25 +1520,25 @@ impl WlSurface {
let bounds = self.toplevel.get().and_then(|tl| tl.tl_render_bounds());
let pos = self.buffer_abs_pos.get();
let apply_damage = |pos: Rect| {
if pending.damage_full {
let mut damage = pos;
let clip_damage = |mut damage: Rect| {
damage = damage.intersect(pos);
if let Some(bounds) = bounds {
damage = damage.intersect(bounds);
}
self.client.state.damage(damage);
damage
};
if pending.damage_full {
self.client.state.damage(clip_damage(pos));
} else {
let matrix = self.damage_matrix.get();
if let Some(buffer) = self.buffer.get() {
for damage in &pending.buffer_damage {
let mut damage = matrix.apply(
let damage = matrix.apply(
pos.x1(),
pos.y1(),
damage.intersect(buffer.buffer.buf.rect),
);
if let Some(bounds) = bounds {
damage = damage.intersect(bounds);
}
self.client.state.damage(damage);
self.client.state.damage(clip_damage(damage));
}
}
for damage in &pending.surface_damage {
@ -1550,8 +1550,7 @@ impl WlSurface {
let y2 = (damage.y2() + scale - 1) / scale;
damage = Rect::new_saturating(x1, y1, x2, y2);
}
damage = damage.intersect(bounds.unwrap_or(pos));
self.client.state.damage(damage);
self.client.state.damage(clip_damage(damage));
}
}
};