it: fix integration geometry and tab scrolling
This commit is contained in:
parent
b6502e1d8a
commit
f777b4c521
30 changed files with 123 additions and 72 deletions
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue