1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:17:36 +00:00

LibWeb: Hang StackingContext off of the paint boxes

Stacking contexts have nothing to do with layout and everything with
painting, so let's keep them in Painting::Box.
This commit is contained in:
Andreas Kling 2022-03-10 10:38:13 +01:00
parent cc8e429126
commit 9f5cbcaad3
10 changed files with 39 additions and 38 deletions

View file

@ -24,18 +24,18 @@ InitialContainingBlock::~InitialContainingBlock()
void InitialContainingBlock::build_stacking_context_tree()
{
set_stacking_context(make<Painting::StackingContext>(*this, nullptr));
m_paint_box->set_stacking_context(make<Painting::StackingContext>(*this, nullptr));
for_each_in_inclusive_subtree_of_type<Box>([&](Box& box) {
if (&box == this)
return IterationDecision::Continue;
if (!box.establishes_stacking_context()) {
VERIFY(!box.stacking_context());
VERIFY(!box.m_paint_box->stacking_context());
return IterationDecision::Continue;
}
auto* parent_context = box.enclosing_stacking_context();
auto* parent_context = box.m_paint_box->enclosing_stacking_context();
VERIFY(parent_context);
box.set_stacking_context(make<Painting::StackingContext>(box, parent_context));
box.m_paint_box->set_stacking_context(make<Painting::StackingContext>(box, parent_context));
return IterationDecision::Continue;
});
}
@ -44,12 +44,12 @@ void InitialContainingBlock::paint_all_phases(PaintContext& context)
{
context.painter().fill_rect(enclosing_int_rect(m_paint_box->absolute_rect()), context.palette().base());
context.painter().translate(-context.viewport_rect().location());
stacking_context()->paint(context);
m_paint_box->stacking_context()->paint(context);
}
HitTestResult InitialContainingBlock::hit_test(const Gfx::IntPoint& position, HitTestType type) const
{
return stacking_context()->hit_test(position, type);
return m_paint_box->stacking_context()->hit_test(position, type);
}
void InitialContainingBlock::recompute_selection_states()