mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 04:25:13 +00:00
LibWeb: Preserve paint state when painting stacking contexts indirectly
For layers that require indirect painting (due to opacity, transform, etc.) we create a nested PaintContext. Until now, that PaintContext was created fresh without transferring all the state from the parent PaintContext.
This commit is contained in:
parent
2a8c6361aa
commit
54c3053bc3
Notes:
sideshowbarker
2024-07-17 16:44:48 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/54c3053bc3
2 changed files with 11 additions and 1 deletions
|
@ -37,6 +37,16 @@ public:
|
|||
bool has_focus() const { return m_focus; }
|
||||
void set_has_focus(bool focus) { m_focus = focus; }
|
||||
|
||||
PaintContext clone() const
|
||||
{
|
||||
auto clone = PaintContext(m_painter, m_palette, m_scroll_offset);
|
||||
clone.m_viewport_rect = m_viewport_rect;
|
||||
clone.m_should_show_line_box_borders = m_should_show_line_box_borders;
|
||||
clone.m_focus = m_focus;
|
||||
clone.m_svg_context = m_svg_context;
|
||||
return clone;
|
||||
}
|
||||
|
||||
private:
|
||||
Gfx::Painter& m_painter;
|
||||
Palette m_palette;
|
||||
|
|
|
@ -262,7 +262,7 @@ void StackingContext::paint(PaintContext& context) const
|
|||
return;
|
||||
auto bitmap = bitmap_or_error.release_value_but_fixme_should_propagate_errors();
|
||||
Gfx::Painter painter(bitmap);
|
||||
PaintContext paint_context(painter, context.palette(), context.scroll_offset());
|
||||
auto paint_context = context.clone();
|
||||
paint_internal(paint_context);
|
||||
|
||||
auto transform_origin = this->transform_origin();
|
||||
|
|
Loading…
Add table
Reference in a new issue