diff --git a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp index e2e89fd48e4..485c17d2998 100644 --- a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp @@ -108,12 +108,14 @@ void BlockFormattingContext::parent_context_did_dimension_child_root_box() box_state.set_content_x(float_containing_block_width - floating_box->offset_from_edge); } - // We can also layout absolutely positioned boxes within this BFC. - for (auto& box : m_absolutely_positioned_boxes) { - auto& cb_state = m_state.get(*box->containing_block()); - auto available_width = AvailableSize::make_definite(cb_state.content_width() + cb_state.padding_left + cb_state.padding_right); - auto available_height = AvailableSize::make_definite(cb_state.content_height() + cb_state.padding_top + cb_state.padding_bottom); - layout_absolutely_positioned_element(box, AvailableSpace(available_width, available_height)); + if (m_layout_mode == LayoutMode::Normal) { + // We can also layout absolutely positioned boxes within this BFC. + for (auto& box : m_absolutely_positioned_boxes) { + auto& cb_state = m_state.get(*box->containing_block()); + auto available_width = AvailableSize::make_definite(cb_state.content_width() + cb_state.padding_left + cb_state.padding_right); + auto available_height = AvailableSize::make_definite(cb_state.content_height() + cb_state.padding_top + cb_state.padding_bottom); + layout_absolutely_positioned_element(box, AvailableSpace(available_width, available_height)); + } } } diff --git a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp index eeaf75e6f1c..5f9e163caa1 100644 --- a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp @@ -181,6 +181,9 @@ void FlexFormattingContext::run(AvailableSpace const& available_space) void FlexFormattingContext::parent_context_did_dimension_child_root_box() { + if (m_layout_mode != LayoutMode::Normal) + return; + flex_container().for_each_child_of_type([&](Layout::Box& box) { if (box.is_absolutely_positioned()) { auto& cb_state = m_state.get(*box.containing_block()); diff --git a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp index dda7e706aaf..09102dec19d 100644 --- a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp @@ -2005,6 +2005,9 @@ void GridFormattingContext::layout_absolutely_positioned_element(Box const& box, void GridFormattingContext::parent_context_did_dimension_child_root_box() { + if (m_layout_mode != LayoutMode::Normal) + return; + grid_container().for_each_child_of_type([&](Layout::Box& box) { if (box.is_absolutely_positioned()) { auto& cb_state = m_state.get(*box.containing_block());