From 6868ace8f4390e48eb1add3aea3ca7e9dcfd6ad5 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Mon, 7 Aug 2023 00:51:05 +0200 Subject: [PATCH] LibWeb: Add non-const version of paintable_box() in Layout::Node Allows to remove a bunch of const_cast's --- Userland/Libraries/LibWeb/Layout/Box.cpp | 5 +++++ Userland/Libraries/LibWeb/Layout/Box.h | 1 + Userland/Libraries/LibWeb/Layout/Viewport.cpp | 10 +++++----- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Userland/Libraries/LibWeb/Layout/Box.cpp b/Userland/Libraries/LibWeb/Layout/Box.cpp index f469f99b15..837eaa758a 100644 --- a/Userland/Libraries/LibWeb/Layout/Box.cpp +++ b/Userland/Libraries/LibWeb/Layout/Box.cpp @@ -77,6 +77,11 @@ JS::GCPtr Box::create_paintable() const return Painting::PaintableBox::create(*this); } +Painting::PaintableBox* Box::paintable_box() +{ + return static_cast(Node::paintable()); +} + Painting::PaintableBox const* Box::paintable_box() const { return static_cast(Node::paintable()); diff --git a/Userland/Libraries/LibWeb/Layout/Box.h b/Userland/Libraries/LibWeb/Layout/Box.h index b75001d170..578f6965de 100644 --- a/Userland/Libraries/LibWeb/Layout/Box.h +++ b/Userland/Libraries/LibWeb/Layout/Box.h @@ -23,6 +23,7 @@ class Box : public NodeWithStyleAndBoxModelMetrics { public: Painting::PaintableBox const* paintable_box() const; + Painting::PaintableBox* paintable_box(); virtual void set_needs_display() override; diff --git a/Userland/Libraries/LibWeb/Layout/Viewport.cpp b/Userland/Libraries/LibWeb/Layout/Viewport.cpp index 02d933d9c1..d693ec29bf 100644 --- a/Userland/Libraries/LibWeb/Layout/Viewport.cpp +++ b/Userland/Libraries/LibWeb/Layout/Viewport.cpp @@ -33,24 +33,24 @@ void Viewport::build_stacking_context_tree_if_needed() void Viewport::build_stacking_context_tree() { - const_cast(paintable_box())->set_stacking_context(make(*this, nullptr, 0)); + paintable_box()->set_stacking_context(make(*this, nullptr, 0)); size_t index_in_tree_order = 1; for_each_in_subtree_of_type([&](Box& box) { if (!box.paintable_box()) return IterationDecision::Continue; - const_cast(box.paintable_box())->invalidate_stacking_context(); + box.paintable_box()->invalidate_stacking_context(); if (!box.establishes_stacking_context()) { VERIFY(!box.paintable_box()->stacking_context()); return IterationDecision::Continue; } - auto* parent_context = const_cast(box.paintable_box())->enclosing_stacking_context(); + auto* parent_context = box.paintable_box()->enclosing_stacking_context(); VERIFY(parent_context); - const_cast(box.paintable_box())->set_stacking_context(make(box, parent_context, index_in_tree_order++)); + box.paintable_box()->set_stacking_context(make(box, parent_context, index_in_tree_order++)); return IterationDecision::Continue; }); - const_cast(paintable_box())->stacking_context()->sort(); + paintable_box()->stacking_context()->sort(); } void Viewport::paint_all_phases(PaintContext& context)