LibWeb: Fix blit corner clip position in PaintableWithLines

Fixes the bug when blit and sample commands position didn't match.

Before:
1. Emit sample under corners
2. Apply scroll offset
3. Paint content
3. Blit corner clipping

After:
1. Emit sample under corners
2. Save state
3. Apply scroll offset
4. Paint content
5. Restore state
6. Blit corner clipping
This commit is contained in:
Aliaksandr Kalenik 2024-05-26 10:45:51 +01:00 committed by Alexander Kalenik
parent 09f4032eeb
commit 3d8349eb88
Notes: sideshowbarker 2024-07-17 03:03:37 +09:00

View file

@ -692,6 +692,7 @@ void PaintableWithLines::paint(PaintContext& context, PaintPhase phase) const
context.recording_painter().sample_under_corners(*corner_clip_id, corner_radii, context.rounded_device_rect(clip_box).to_type<int>(), CornerClip::Outside);
}
context.recording_painter().save();
auto scroll_offset = context.rounded_device_point(this->scroll_offset());
context.recording_painter().translate(-scroll_offset.to_type<int>());
}
@ -725,6 +726,7 @@ void PaintableWithLines::paint(PaintContext& context, PaintPhase phase) const
context.recording_painter().blit_corner_clipping(*corner_clip_id, clip_box.to_type<int>());
corner_clip_id = {};
}
context.recording_painter().restore();
}
}