diff --git a/Userland/Libraries/LibWeb/Painting/Paintable.cpp b/Userland/Libraries/LibWeb/Painting/Paintable.cpp index 6da6ff15b1..88d1ec9d5c 100644 --- a/Userland/Libraries/LibWeb/Painting/Paintable.cpp +++ b/Userland/Libraries/LibWeb/Painting/Paintable.cpp @@ -11,11 +11,18 @@ namespace Web::Painting { +Paintable::Paintable(Layout::Node const& layout_node) + : m_layout_node(layout_node) + , m_browsing_context(const_cast(layout_node.browsing_context())) +{ +} + void Paintable::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); visitor.visit(m_dom_node); visitor.visit(m_layout_node); + visitor.visit(m_browsing_context); if (m_containing_block.has_value()) visitor.visit(m_containing_block.value()); } @@ -35,6 +42,16 @@ JS::GCPtr Paintable::dom_node() const return m_dom_node; } +HTML::BrowsingContext const& Paintable::browsing_context() const +{ + return m_browsing_context; +} + +HTML::BrowsingContext& Paintable::browsing_context() +{ + return m_browsing_context; +} + Paintable::DispatchEventOfSameName Paintable::handle_mousedown(Badge, CSSPixelPoint, unsigned, unsigned) { return DispatchEventOfSameName::Yes; diff --git a/Userland/Libraries/LibWeb/Painting/Paintable.h b/Userland/Libraries/LibWeb/Painting/Paintable.h index 81a7087ca0..d3f832d1c3 100644 --- a/Userland/Libraries/LibWeb/Painting/Paintable.h +++ b/Userland/Libraries/LibWeb/Painting/Paintable.h @@ -139,8 +139,8 @@ public: bool visible_for_hit_testing() const { return computed_values().pointer_events() != CSS::PointerEvents::None; } - HTML::BrowsingContext const& browsing_context() const { return m_layout_node->browsing_context(); } - HTML::BrowsingContext& browsing_context() { return layout_node().browsing_context(); } + [[nodiscard]] HTML::BrowsingContext const& browsing_context() const; + [[nodiscard]] HTML::BrowsingContext& browsing_context(); void set_needs_display() const { const_cast(*m_layout_node).set_needs_display(); } @@ -157,16 +157,14 @@ public: StackingContext const* stacking_context_rooted_here() const; protected: - explicit Paintable(Layout::Node const& layout_node) - : m_layout_node(layout_node) - { - } + explicit Paintable(Layout::Node const&); virtual void visit_edges(Cell::Visitor&) override; private: JS::GCPtr m_dom_node; JS::NonnullGCPtr m_layout_node; + JS::NonnullGCPtr m_browsing_context; Optional> mutable m_containing_block; };