1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 03:27:45 +00:00

LibWeb: Add Layout::Box::is_scroll_container()

The computed `overflow` property values determine whether a box is a
scroll container or not, so let's have a simple helper for asking this.
This commit is contained in:
Andreas Kling 2023-03-26 11:56:12 +02:00
parent 3932afdc6a
commit 8038824211
2 changed files with 23 additions and 0 deletions

View file

@ -29,6 +29,27 @@ Box::~Box()
{ {
} }
// https://www.w3.org/TR/css-overflow-3/#overflow-control
bool overflow_value_makes_box_a_scroll_container(CSS::Overflow overflow)
{
switch (overflow) {
case CSS::Overflow::Clip:
case CSS::Overflow::Visible:
return false;
case CSS::Overflow::Auto:
case CSS::Overflow::Hidden:
case CSS::Overflow::Scroll:
return true;
}
}
// https://www.w3.org/TR/css-overflow-3/#scroll-container
bool Box::is_scroll_container() const
{
return overflow_value_makes_box_a_scroll_container(computed_values().overflow_x())
|| overflow_value_makes_box_a_scroll_container(computed_values().overflow_y());
}
bool Box::is_scrollable() const bool Box::is_scrollable() const
{ {
// FIXME: Support horizontal scroll as well (overflow-x) // FIXME: Support horizontal scroll as well (overflow-x)

View file

@ -42,6 +42,8 @@ public:
virtual JS::GCPtr<Painting::Paintable> create_paintable() const override; virtual JS::GCPtr<Painting::Paintable> create_paintable() const override;
bool is_scroll_container() const;
bool is_scrollable() const; bool is_scrollable() const;
CSSPixelPoint scroll_offset() const { return m_scroll_offset; } CSSPixelPoint scroll_offset() const { return m_scroll_offset; }
void set_scroll_offset(CSSPixelPoint); void set_scroll_offset(CSSPixelPoint);