1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:07:45 +00:00

LibWeb: Use correct coordinate space when measuring space between floats

When calculating how much space is available for inline content between
left and right floated elements, we have to use coordinates in the
containing block's coordinate space, since that's what floats use.

This fixes an issue where text would sometimes overlap floats.
This commit is contained in:
Andreas Kling 2022-02-21 20:40:55 +01:00
parent 8c2a4a2a3d
commit bb1f26c149

View file

@ -48,7 +48,7 @@ InlineFormattingContext::AvailableSpaceForLineInfo InlineFormattingContext::avai
for (ssize_t i = bfc.left_side_floats().boxes.size() - 1; i >= 0; --i) {
auto const& floating_box = bfc.left_side_floats().boxes.at(i);
auto rect = margin_box_rect(floating_box, m_state);
auto rect = margin_box_rect_in_ancestor_coordinate_space(floating_box, parent().root(), m_state);
if (rect.contains_vertically(y_in_root)) {
info.left = rect.right() + 1;
break;
@ -59,7 +59,7 @@ InlineFormattingContext::AvailableSpaceForLineInfo InlineFormattingContext::avai
for (ssize_t i = bfc.right_side_floats().boxes.size() - 1; i >= 0; --i) {
auto const& floating_box = bfc.right_side_floats().boxes.at(i);
auto rect = margin_box_rect(floating_box, m_state);
auto rect = margin_box_rect_in_ancestor_coordinate_space(floating_box, parent().root(), m_state);
if (rect.contains_vertically(y_in_root)) {
info.right = rect.left() - 1;
break;