LibWeb: Forbid scrolling of viewport if overflow=hidden

Before this change viewport was allowed to be scrolled whenever it has a
scrollable overflow, which is not correct when overflow is specified to
be hidden.
This commit is contained in:
Aliaksandr Kalenik 2024-10-07 17:43:21 +02:00 committed by Alexander Kalenik
commit a46c2a0887
Notes: github-actions[bot] 2024-10-07 16:36:26 +00:00

View file

@ -240,7 +240,7 @@ bool PaintableBox::is_scrollable(ScrollDirection direction) const
auto overflow = direction == ScrollDirection::Horizontal ? computed_values().overflow_x() : computed_values().overflow_y(); auto overflow = direction == ScrollDirection::Horizontal ? computed_values().overflow_x() : computed_values().overflow_y();
auto scrollable_overflow_size = direction == ScrollDirection::Horizontal ? scrollable_overflow_rect()->width() : scrollable_overflow_rect()->height(); auto scrollable_overflow_size = direction == ScrollDirection::Horizontal ? scrollable_overflow_rect()->width() : scrollable_overflow_rect()->height();
auto scrollport_size = direction == ScrollDirection::Horizontal ? absolute_padding_box_rect().width() : absolute_padding_box_rect().height(); auto scrollport_size = direction == ScrollDirection::Horizontal ? absolute_padding_box_rect().width() : absolute_padding_box_rect().height();
if (is_viewport() || overflow == CSS::Overflow::Auto) if ((is_viewport() && overflow != CSS::Overflow::Hidden) || overflow == CSS::Overflow::Auto)
return scrollable_overflow_size > scrollport_size; return scrollable_overflow_size > scrollport_size;
return overflow == CSS::Overflow::Scroll; return overflow == CSS::Overflow::Scroll;
} }