mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:17:45 +00:00
LibWeb: Clip descendants of boxes with overflow:hidden
This is a very limited implementation of overflow:hidden, but since it's easy to cover this common scenario, let's do it.
This commit is contained in:
parent
df3cd2fd56
commit
ec49c8fefd
2 changed files with 21 additions and 0 deletions
|
@ -234,4 +234,22 @@ StackingContext* Box::enclosing_stacking_context()
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Box::before_children_paint(PaintContext& context, PaintPhase phase)
|
||||||
|
{
|
||||||
|
NodeWithStyleAndBoxModelMetrics::before_children_paint(context, phase);
|
||||||
|
// FIXME: Support more overflow variations.
|
||||||
|
if (computed_values().overflow_x() == CSS::Overflow::Hidden && computed_values().overflow_y() == CSS::Overflow::Hidden) {
|
||||||
|
context.painter().save();
|
||||||
|
context.painter().add_clip_rect(enclosing_int_rect(bordered_rect()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Box::after_children_paint(PaintContext& context, PaintPhase phase)
|
||||||
|
{
|
||||||
|
NodeWithStyleAndBoxModelMetrics::after_children_paint(context, phase);
|
||||||
|
// FIXME: Support more overflow variations.
|
||||||
|
if (computed_values().overflow_x() == CSS::Overflow::Hidden && computed_values().overflow_y() == CSS::Overflow::Hidden)
|
||||||
|
context.painter().restore();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,6 +150,9 @@ public:
|
||||||
|
|
||||||
void clear_overflow_data() { m_overflow_data = nullptr; }
|
void clear_overflow_data() { m_overflow_data = nullptr; }
|
||||||
|
|
||||||
|
virtual void before_children_paint(PaintContext&, PaintPhase);
|
||||||
|
virtual void after_children_paint(PaintContext&, PaintPhase);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Box(DOM::Document& document, DOM::Node* node, NonnullRefPtr<CSS::StyleProperties> style)
|
Box(DOM::Document& document, DOM::Node* node, NonnullRefPtr<CSS::StyleProperties> style)
|
||||||
: NodeWithStyleAndBoxModelMetrics(document, node, move(style))
|
: NodeWithStyleAndBoxModelMetrics(document, node, move(style))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue