mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 17:47:36 +00:00
LibWeb: Use Layout::Box::paint_box() accessor in more places
This commit is contained in:
parent
02b316fd5c
commit
9461e44afa
22 changed files with 60 additions and 61 deletions
|
@ -37,7 +37,7 @@ HitTestResult BlockContainer::hit_test(const Gfx::IntPoint& position, HitTestTyp
|
|||
HitTestResult last_good_candidate;
|
||||
for (auto& line_box : paint_box()->line_boxes()) {
|
||||
for (auto& fragment : line_box.fragments()) {
|
||||
if (is<Box>(fragment.layout_node()) && verify_cast<Box>(fragment.layout_node()).m_paint_box->stacking_context())
|
||||
if (is<Box>(fragment.layout_node()) && verify_cast<Box>(fragment.layout_node()).paint_box()->stacking_context())
|
||||
continue;
|
||||
if (enclosing_int_rect(fragment.absolute_rect()).contains(position)) {
|
||||
if (is<BlockContainer>(fragment.layout_node()))
|
||||
|
@ -51,7 +51,7 @@ HitTestResult BlockContainer::hit_test(const Gfx::IntPoint& position, HitTestTyp
|
|||
|
||||
if (type == HitTestType::TextCursor && last_good_candidate.layout_node)
|
||||
return last_good_candidate;
|
||||
return { m_paint_box->absolute_border_box_rect().contains(position.x(), position.y()) ? this : nullptr };
|
||||
return { paint_box()->absolute_border_box_rect().contains(position.x(), position.y()) ? this : nullptr };
|
||||
}
|
||||
|
||||
bool BlockContainer::is_scrollable() const
|
||||
|
|
|
@ -67,7 +67,7 @@ HitTestResult Box::hit_test(const Gfx::IntPoint& position, HitTestType type) con
|
|||
// FIXME: It would be nice if we could confidently skip over hit testing
|
||||
// parts of the layout tree, but currently we can't just check
|
||||
// m_rect.contains() since inline text rects can't be trusted..
|
||||
HitTestResult result { m_paint_box->absolute_border_box_rect().contains(position.x(), position.y()) ? this : nullptr };
|
||||
HitTestResult result { paint_box()->absolute_border_box_rect().contains(position.x(), position.y()) ? this : nullptr };
|
||||
for_each_child_in_paint_order([&](auto& child) {
|
||||
auto child_result = child.hit_test(position, type);
|
||||
if (child_result.layout_node)
|
||||
|
@ -79,7 +79,7 @@ HitTestResult Box::hit_test(const Gfx::IntPoint& position, HitTestType type) con
|
|||
void Box::set_needs_display()
|
||||
{
|
||||
if (!is_inline()) {
|
||||
browsing_context().set_needs_display(enclosing_int_rect(m_paint_box->absolute_rect()));
|
||||
browsing_context().set_needs_display(enclosing_int_rect(paint_box()->absolute_rect()));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ void ButtonBox::handle_mouseup(Badge<EventHandler>, const Gfx::IntPoint& positio
|
|||
NonnullRefPtr protected_this = *this;
|
||||
NonnullRefPtr protected_browsing_context = browsing_context();
|
||||
|
||||
bool is_inside_node_or_label = enclosing_int_rect(m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_node_or_label = enclosing_int_rect(paint_box()->absolute_rect()).contains(position);
|
||||
if (!is_inside_node_or_label)
|
||||
is_inside_node_or_label = Label::is_inside_associated_label(*this, position);
|
||||
|
||||
|
@ -70,7 +70,7 @@ void ButtonBox::handle_mousemove(Badge<EventHandler>, const Gfx::IntPoint& posit
|
|||
if (!m_tracking_mouse || !dom_node().enabled())
|
||||
return;
|
||||
|
||||
bool is_inside_node_or_label = enclosing_int_rect(m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_node_or_label = enclosing_int_rect(paint_box()->absolute_rect()).contains(position);
|
||||
if (!is_inside_node_or_label)
|
||||
is_inside_node_or_label = Label::is_inside_associated_label(*this, position);
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ void CheckBox::handle_mouseup(Badge<EventHandler>, const Gfx::IntPoint& position
|
|||
// NOTE: Changing the checked state of the DOM node may run arbitrary JS, which could disappear this node.
|
||||
NonnullRefPtr protect = *this;
|
||||
|
||||
bool is_inside_node_or_label = enclosing_int_rect(m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_node_or_label = enclosing_int_rect(paint_box()->absolute_rect()).contains(position);
|
||||
if (!is_inside_node_or_label)
|
||||
is_inside_node_or_label = Label::is_inside_associated_label(*this, position);
|
||||
|
||||
|
@ -66,7 +66,7 @@ void CheckBox::handle_mousemove(Badge<EventHandler>, const Gfx::IntPoint& positi
|
|||
if (!m_tracking_mouse || !dom_node().enabled())
|
||||
return;
|
||||
|
||||
bool is_inside_node_or_label = enclosing_int_rect(m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_node_or_label = enclosing_int_rect(paint_box()->absolute_rect()).contains(position);
|
||||
if (!is_inside_node_or_label)
|
||||
is_inside_node_or_label = Label::is_inside_associated_label(*this, position);
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ void FrameBox::did_set_rect()
|
|||
ReplacedBox::did_set_rect();
|
||||
|
||||
VERIFY(dom_node().nested_browsing_context());
|
||||
dom_node().nested_browsing_context()->set_size(m_paint_box->content_size().to_type<int>());
|
||||
dom_node().nested_browsing_context()->set_size(paint_box()->content_size().to_type<int>());
|
||||
}
|
||||
|
||||
OwnPtr<Painting::Paintable> FrameBox::create_paintable() const
|
||||
|
|
|
@ -81,7 +81,7 @@ bool ImageBox::renders_as_alt_text() const
|
|||
|
||||
void ImageBox::browsing_context_did_set_viewport_rect(Gfx::IntRect const& viewport_rect)
|
||||
{
|
||||
m_image_loader.set_visible_in_viewport(viewport_rect.to_type<float>().intersects(m_paint_box->absolute_rect()));
|
||||
m_image_loader.set_visible_in_viewport(viewport_rect.to_type<float>().intersects(paint_box()->absolute_rect()));
|
||||
}
|
||||
|
||||
OwnPtr<Painting::Paintable> ImageBox::create_paintable() const
|
||||
|
|
|
@ -24,32 +24,32 @@ InitialContainingBlock::~InitialContainingBlock()
|
|||
|
||||
void InitialContainingBlock::build_stacking_context_tree()
|
||||
{
|
||||
m_paint_box->set_stacking_context(make<Painting::StackingContext>(*this, nullptr));
|
||||
const_cast<Painting::PaintableWithLines*>(paint_box())->set_stacking_context(make<Painting::StackingContext>(*this, nullptr));
|
||||
|
||||
for_each_in_inclusive_subtree_of_type<Box>([&](Box& box) {
|
||||
if (&box == this)
|
||||
return IterationDecision::Continue;
|
||||
if (!box.establishes_stacking_context()) {
|
||||
VERIFY(!box.m_paint_box->stacking_context());
|
||||
VERIFY(!box.paint_box()->stacking_context());
|
||||
return IterationDecision::Continue;
|
||||
}
|
||||
auto* parent_context = box.m_paint_box->enclosing_stacking_context();
|
||||
auto* parent_context = const_cast<Painting::Paintable*>(box.paint_box())->enclosing_stacking_context();
|
||||
VERIFY(parent_context);
|
||||
box.m_paint_box->set_stacking_context(make<Painting::StackingContext>(box, parent_context));
|
||||
const_cast<Painting::Paintable*>(box.paint_box())->set_stacking_context(make<Painting::StackingContext>(box, parent_context));
|
||||
return IterationDecision::Continue;
|
||||
});
|
||||
}
|
||||
|
||||
void InitialContainingBlock::paint_all_phases(PaintContext& context)
|
||||
{
|
||||
context.painter().fill_rect(enclosing_int_rect(m_paint_box->absolute_rect()), context.palette().base());
|
||||
context.painter().fill_rect(enclosing_int_rect(paint_box()->absolute_rect()), context.palette().base());
|
||||
context.painter().translate(-context.viewport_rect().location());
|
||||
m_paint_box->stacking_context()->paint(context);
|
||||
paint_box()->stacking_context()->paint(context);
|
||||
}
|
||||
|
||||
HitTestResult InitialContainingBlock::hit_test(const Gfx::IntPoint& position, HitTestType type) const
|
||||
{
|
||||
return m_paint_box->stacking_context()->hit_test(position, type);
|
||||
return paint_box()->stacking_context()->hit_test(position, type);
|
||||
}
|
||||
|
||||
void InitialContainingBlock::recompute_selection_states()
|
||||
|
|
|
@ -36,7 +36,7 @@ void InlineNode::paint_inline(PaintContext& context, Painting::PaintPhase phase)
|
|||
auto top_right_border_radius = computed_values().border_top_right_radius();
|
||||
auto bottom_right_border_radius = computed_values().border_bottom_right_radius();
|
||||
auto bottom_left_border_radius = computed_values().border_bottom_left_radius();
|
||||
auto containing_block_position_in_absolute_coordinates = containing_block()->m_paint_box->absolute_position();
|
||||
auto containing_block_position_in_absolute_coordinates = containing_block()->paint_box()->absolute_position();
|
||||
|
||||
for_each_fragment([&](auto const& fragment, bool is_first_fragment, bool is_last_fragment) {
|
||||
Gfx::FloatRect absolute_fragment_rect { containing_block_position_in_absolute_coordinates.translated(fragment.offset()), fragment.size() };
|
||||
|
@ -87,7 +87,7 @@ void InlineNode::paint_inline(PaintContext& context, Painting::PaintPhase phase)
|
|||
.left = computed_values().border_left(),
|
||||
};
|
||||
|
||||
auto containing_block_position_in_absolute_coordinates = containing_block()->m_paint_box->absolute_position();
|
||||
auto containing_block_position_in_absolute_coordinates = containing_block()->paint_box()->absolute_position();
|
||||
|
||||
for_each_fragment([&](auto const& fragment, bool is_first_fragment, bool is_last_fragment) {
|
||||
Gfx::FloatRect absolute_fragment_rect { containing_block_position_in_absolute_coordinates.translated(fragment.offset()), fragment.size() };
|
||||
|
|
|
@ -47,8 +47,8 @@ void Label::handle_mouseup_on_label(Badge<TextNode>, const Gfx::IntPoint& positi
|
|||
NonnullRefPtr protect = *this;
|
||||
|
||||
if (auto* control = labeled_control(); control) {
|
||||
bool is_inside_control = enclosing_int_rect(control->m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_label = enclosing_int_rect(m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_control = enclosing_int_rect(control->paint_box()->absolute_rect()).contains(position);
|
||||
bool is_inside_label = enclosing_int_rect(paint_box()->absolute_rect()).contains(position);
|
||||
|
||||
if (is_inside_control || is_inside_label)
|
||||
control->handle_associated_label_mouseup({});
|
||||
|
@ -63,8 +63,8 @@ void Label::handle_mousemove_on_label(Badge<TextNode>, const Gfx::IntPoint& posi
|
|||
return;
|
||||
|
||||
if (auto* control = labeled_control(); control) {
|
||||
bool is_inside_control = enclosing_int_rect(control->m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_label = enclosing_int_rect(m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_control = enclosing_int_rect(control->paint_box()->absolute_rect()).contains(position);
|
||||
bool is_inside_label = enclosing_int_rect(paint_box()->absolute_rect()).contains(position);
|
||||
|
||||
control->handle_associated_label_mousemove({}, is_inside_control || is_inside_label);
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ void Label::handle_mousemove_on_label(Badge<TextNode>, const Gfx::IntPoint& posi
|
|||
bool Label::is_inside_associated_label(LabelableNode& control, const Gfx::IntPoint& position)
|
||||
{
|
||||
if (auto* label = label_for_control_node(control); label)
|
||||
return enclosing_int_rect(label->m_paint_box->absolute_rect()).contains(position);
|
||||
return enclosing_int_rect(label->paint_box()->absolute_rect()).contains(position);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ StringView LineBoxFragment::text() const
|
|||
const Gfx::FloatRect LineBoxFragment::absolute_rect() const
|
||||
{
|
||||
Gfx::FloatRect rect { {}, size() };
|
||||
rect.set_location(m_layout_node.containing_block()->m_paint_box->absolute_position());
|
||||
rect.set_location(m_layout_node.containing_block()->paint_box()->absolute_position());
|
||||
rect.translate_by(offset());
|
||||
return rect;
|
||||
}
|
||||
|
|
|
@ -124,7 +124,7 @@ void Node::set_needs_display()
|
|||
Gfx::FloatPoint Node::box_type_agnostic_position() const
|
||||
{
|
||||
if (is<Box>(*this))
|
||||
return verify_cast<Box>(*this).m_paint_box->absolute_position();
|
||||
return verify_cast<Box>(*this).paint_box()->absolute_position();
|
||||
VERIFY(is_inline());
|
||||
Gfx::FloatPoint position;
|
||||
if (auto* block = containing_block()) {
|
||||
|
|
|
@ -159,7 +159,7 @@ public:
|
|||
return;
|
||||
|
||||
auto& box_child = verify_cast<Box>(child);
|
||||
auto* stacking_context = box_child.m_paint_box->stacking_context();
|
||||
auto* stacking_context = box_child.paint_box()->stacking_context();
|
||||
if (stacking_context && box_child.computed_values().z_index().has_value() && box_child.computed_values().z_index().value() < 0)
|
||||
callback(child);
|
||||
});
|
||||
|
@ -167,7 +167,7 @@ public:
|
|||
// 4. For all its in-flow, non-positioned, block-level descendants in tree order: If the element is a block, list-item,
|
||||
// or other block equivalent:
|
||||
for_each_child([&](auto& child) {
|
||||
if (is<Box>(child) && verify_cast<Box>(child).m_paint_box->stacking_context())
|
||||
if (is<Box>(child) && verify_cast<Box>(child).paint_box()->stacking_context())
|
||||
return;
|
||||
if (!child.is_positioned())
|
||||
callback(child);
|
||||
|
@ -177,7 +177,7 @@ public:
|
|||
// a new stacking context, but any positioned descendants and descendants which actually create a new stacking context
|
||||
// should be considered part of the parent stacking context, not this new one.
|
||||
for_each_child([&](auto& child) {
|
||||
if (is<Box>(child) && verify_cast<Box>(child).m_paint_box->stacking_context())
|
||||
if (is<Box>(child) && verify_cast<Box>(child).paint_box()->stacking_context())
|
||||
return;
|
||||
if (child.is_positioned())
|
||||
callback(child);
|
||||
|
@ -192,7 +192,7 @@ public:
|
|||
return;
|
||||
|
||||
auto& box_child = verify_cast<Box>(child);
|
||||
auto* stacking_context = box_child.m_paint_box->stacking_context();
|
||||
auto* stacking_context = box_child.paint_box()->stacking_context();
|
||||
if (stacking_context && box_child.computed_values().z_index().has_value() && box_child.computed_values().z_index().value() == 0)
|
||||
callback(child);
|
||||
});
|
||||
|
@ -205,7 +205,7 @@ public:
|
|||
return;
|
||||
|
||||
auto& box_child = verify_cast<Box>(child);
|
||||
auto* stacking_context = box_child.m_paint_box->stacking_context();
|
||||
auto* stacking_context = box_child.paint_box()->stacking_context();
|
||||
if (stacking_context && box_child.computed_values().z_index().has_value() && box_child.computed_values().z_index().value() > 0)
|
||||
callback(child);
|
||||
});
|
||||
|
|
|
@ -47,7 +47,7 @@ void RadioButton::handle_mouseup(Badge<EventHandler>, const Gfx::IntPoint& posit
|
|||
// NOTE: Changing the checked state of the DOM node may run arbitrary JS, which could disappear this node.
|
||||
NonnullRefPtr protect = *this;
|
||||
|
||||
bool is_inside_node_or_label = enclosing_int_rect(m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_node_or_label = enclosing_int_rect(paint_box()->absolute_rect()).contains(position);
|
||||
if (!is_inside_node_or_label)
|
||||
is_inside_node_or_label = Label::is_inside_associated_label(*this, position);
|
||||
|
||||
|
@ -64,7 +64,7 @@ void RadioButton::handle_mousemove(Badge<EventHandler>, const Gfx::IntPoint& pos
|
|||
if (!m_tracking_mouse || !dom_node().enabled())
|
||||
return;
|
||||
|
||||
bool is_inside_node_or_label = enclosing_int_rect(m_paint_box->absolute_rect()).contains(position);
|
||||
bool is_inside_node_or_label = enclosing_int_rect(paint_box()->absolute_rect()).contains(position);
|
||||
if (!is_inside_node_or_label)
|
||||
is_inside_node_or_label = Label::is_inside_associated_label(*this, position);
|
||||
|
||||
|
|
|
@ -29,10 +29,10 @@ float SVGGeometryBox::viewbox_scaling() const
|
|||
auto view_box = svg_box->view_box().value();
|
||||
|
||||
bool has_specified_width = svg_box->has_attribute(HTML::AttributeNames::width);
|
||||
auto specified_width = m_paint_box->content_width();
|
||||
auto specified_width = paint_box()->content_width();
|
||||
|
||||
bool has_specified_height = svg_box->has_attribute(HTML::AttributeNames::height);
|
||||
auto specified_height = m_paint_box->content_height();
|
||||
auto specified_height = paint_box()->content_height();
|
||||
|
||||
auto scale_width = has_specified_width ? specified_width / view_box.width : 1;
|
||||
auto scale_height = has_specified_height ? specified_height / view_box.height : 1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue