diff --git a/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp b/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp index f82dbec5229..e5b05404f2a 100644 --- a/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp +++ b/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp @@ -165,10 +165,10 @@ void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMet CSSPixelPoint enclosing_scroll_offset; if (is(layout_node.paintable())) { auto const& paintable_box = static_cast(*layout_node.paintable()); - enclosing_scroll_offset = paintable_box.enclosing_scroll_frame_offset().value_or({}); + enclosing_scroll_offset = paintable_box.enclosing_scroll_frame_offset(); } else if (is(layout_node.paintable())) { auto const& inline_paintable = static_cast(*layout_node.paintable()); - enclosing_scroll_offset = inline_paintable.enclosing_scroll_frame_offset().value_or({}); + enclosing_scroll_offset = inline_paintable.enclosing_scroll_frame_offset(); } // Note: Background layers are ordered front-to-back, so we paint them in reverse diff --git a/Userland/Libraries/LibWeb/Painting/ClippableAndScrollable.cpp b/Userland/Libraries/LibWeb/Painting/ClippableAndScrollable.cpp index 40ae66f8b96..bde018f1195 100644 --- a/Userland/Libraries/LibWeb/Painting/ClippableAndScrollable.cpp +++ b/Userland/Libraries/LibWeb/Painting/ClippableAndScrollable.cpp @@ -15,7 +15,7 @@ Optional ClippableAndScrollable::scroll_frame_id() const return {}; } -Optional ClippableAndScrollable::enclosing_scroll_frame_offset() const +CSSPixelPoint ClippableAndScrollable::enclosing_scroll_frame_offset() const { if (m_enclosing_scroll_frame) return m_enclosing_scroll_frame->offset; diff --git a/Userland/Libraries/LibWeb/Painting/ClippableAndScrollable.h b/Userland/Libraries/LibWeb/Painting/ClippableAndScrollable.h index bbe06fc338c..667c90b5e5e 100644 --- a/Userland/Libraries/LibWeb/Painting/ClippableAndScrollable.h +++ b/Userland/Libraries/LibWeb/Painting/ClippableAndScrollable.h @@ -23,7 +23,7 @@ public: void set_enclosing_clip_frame(RefPtr clip_frame) { m_enclosing_clip_frame = clip_frame; } [[nodiscard]] Optional scroll_frame_id() const; - [[nodiscard]] Optional enclosing_scroll_frame_offset() const; + [[nodiscard]] CSSPixelPoint enclosing_scroll_frame_offset() const; [[nodiscard]] Optional clip_rect() const; [[nodiscard]] Span border_radii_clips() const; diff --git a/Userland/Libraries/LibWeb/Painting/InlinePaintable.cpp b/Userland/Libraries/LibWeb/Painting/InlinePaintable.cpp index c1b689fefc2..3cdbd8fe7c1 100644 --- a/Userland/Libraries/LibWeb/Painting/InlinePaintable.cpp +++ b/Userland/Libraries/LibWeb/Painting/InlinePaintable.cpp @@ -193,8 +193,7 @@ TraversalDecision InlinePaintable::hit_test(CSSPixelPoint position, HitTestType return TraversalDecision::Continue; auto position_adjusted_by_scroll_offset = position; - if (enclosing_scroll_frame_offset().has_value()) - position_adjusted_by_scroll_offset.translate_by(-enclosing_scroll_frame_offset().value()); + position_adjusted_by_scroll_offset.translate_by(-enclosing_scroll_frame_offset()); for (auto const& fragment : m_fragments) { if (fragment.paintable().stacking_context()) diff --git a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp index 66452ddd564..f21e1e39464 100644 --- a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp +++ b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp @@ -161,9 +161,7 @@ CSSPixelRect PaintableBox::compute_absolute_rect() const CSSPixelRect PaintableBox::compute_absolute_padding_rect_with_scroll_offset_applied() const { auto rect = absolute_rect(); - auto scroll_offset = this->enclosing_scroll_frame_offset(); - if (scroll_offset.has_value()) - rect.translate_by(scroll_offset.value()); + rect.translate_by(enclosing_scroll_frame_offset()); CSSPixelRect padding_rect; padding_rect.set_x(rect.x() - box_model().padding.left); @@ -700,8 +698,7 @@ void PaintableWithLines::paint(PaintContext& context, PaintPhase phase) const context.display_list_recorder().save(); // FIXME: Handle overflow-x and overflow-y being different values. auto clip_box_with_enclosing_scroll_frame_offset = clip_box; - if (enclosing_scroll_frame_offset().has_value()) - clip_box_with_enclosing_scroll_frame_offset.translate_by(enclosing_scroll_frame_offset().value()); + clip_box_with_enclosing_scroll_frame_offset.translate_by(enclosing_scroll_frame_offset()); context.display_list_recorder().add_clip_rect(context.rounded_device_rect(clip_box_with_enclosing_scroll_frame_offset).to_type()); auto border_radii = normalized_border_radii_data(ShrinkRadiiForBorders::Yes); @@ -850,8 +847,7 @@ TraversalDecision PaintableBox::hit_test(CSSPixelPoint position, HitTestType typ return TraversalDecision::Continue; auto position_adjusted_by_scroll_offset = position; - if (enclosing_scroll_frame_offset().has_value()) - position_adjusted_by_scroll_offset.translate_by(-enclosing_scroll_frame_offset().value()); + position_adjusted_by_scroll_offset.translate_by(-enclosing_scroll_frame_offset()); if (!is_visible()) return TraversalDecision::Continue; @@ -904,8 +900,7 @@ TraversalDecision PaintableWithLines::hit_test(CSSPixelPoint position, HitTestTy return TraversalDecision::Continue; auto position_adjusted_by_scroll_offset = position; - if (enclosing_scroll_frame_offset().has_value()) - position_adjusted_by_scroll_offset.translate_by(-enclosing_scroll_frame_offset().value()); + position_adjusted_by_scroll_offset.translate_by(-enclosing_scroll_frame_offset()); if (!layout_box().children_are_inline() || m_fragments.is_empty()) { return PaintableBox::hit_test(position, type, callback); diff --git a/Userland/Libraries/LibWeb/Painting/SVGSVGPaintable.cpp b/Userland/Libraries/LibWeb/Painting/SVGSVGPaintable.cpp index 5d749b99802..26b4241ccb4 100644 --- a/Userland/Libraries/LibWeb/Painting/SVGSVGPaintable.cpp +++ b/Userland/Libraries/LibWeb/Painting/SVGSVGPaintable.cpp @@ -33,7 +33,7 @@ void SVGSVGPaintable::before_children_paint(PaintContext& context, PaintPhase ph return; context.display_list_recorder().save(); auto clip_rect = absolute_rect(); - clip_rect.translate_by(enclosing_scroll_frame_offset().value_or({})); + clip_rect.translate_by(enclosing_scroll_frame_offset()); context.display_list_recorder().add_clip_rect(context.enclosing_device_rect(clip_rect).to_type()); }