diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index 386d5af754..14b746d5f5 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -320,10 +320,10 @@ JS::GCPtr Element::create_layout_node_for_display_type(DOM::Docume return document.heap().allocate_without_realm(document, element, move(style)); } - if (display.is_flex_inside()) + if (display.is_flex_inside() || display.is_grid_inside()) return document.heap().allocate_without_realm(document, element, move(style)); - if (display.is_flow_inside() || display.is_flow_root_inside() || display.is_grid_inside()) + if (display.is_flow_inside() || display.is_flow_root_inside()) return document.heap().allocate_without_realm(document, element, move(style)); TODO(); diff --git a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp index 39026d3d70..58bd823432 100644 --- a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp @@ -151,7 +151,7 @@ OwnPtr FormattingContext::create_independent_formatting_conte return make(state, verify_cast(child_box), this); if (child_display.is_grid_inside()) { - return make(state, verify_cast(child_box), this); + return make(state, child_box, this); } VERIFY(is_block_formatting_context()); diff --git a/Userland/Libraries/LibWeb/Layout/FormattingContext.h b/Userland/Libraries/LibWeb/Layout/FormattingContext.h index f9059176b5..2a6bf22ddd 100644 --- a/Userland/Libraries/LibWeb/Layout/FormattingContext.h +++ b/Userland/Libraries/LibWeb/Layout/FormattingContext.h @@ -21,6 +21,7 @@ public: Block, Inline, Flex, + Grid, Table, SVG, }; diff --git a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp index 9cf1e81938..5d0c1cc1e4 100644 --- a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp @@ -10,8 +10,8 @@ namespace Web::Layout { -GridFormattingContext::GridFormattingContext(LayoutState& state, BlockContainer const& block_container, FormattingContext* parent) - : BlockFormattingContext(state, block_container, parent) +GridFormattingContext::GridFormattingContext(LayoutState& state, Box const& grid_container, FormattingContext* parent) + : FormattingContext(Type::Grid, state, grid_container, parent) { } diff --git a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.h b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.h index b0a24bc7bc..14c3f958c3 100644 --- a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.h +++ b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.h @@ -7,8 +7,6 @@ #pragma once #include -#include -#include #include namespace Web::Layout { @@ -31,9 +29,9 @@ private: Vector> m_occupation_grid; }; -class GridFormattingContext final : public BlockFormattingContext { +class GridFormattingContext final : public FormattingContext { public: - explicit GridFormattingContext(LayoutState&, BlockContainer const&, FormattingContext* parent); + explicit GridFormattingContext(LayoutState&, Box const& grid_container, FormattingContext* parent); ~GridFormattingContext(); virtual void run(Box const&, LayoutMode, AvailableSpace const& available_space) override; diff --git a/Userland/Libraries/LibWeb/Layout/Node.cpp b/Userland/Libraries/LibWeb/Layout/Node.cpp index 7dd7f8327f..4d86439cec 100644 --- a/Userland/Libraries/LibWeb/Layout/Node.cpp +++ b/Userland/Libraries/LibWeb/Layout/Node.cpp @@ -66,7 +66,8 @@ static Box const* nearest_ancestor_capable_of_forming_a_containing_block(Node co { for (auto const* ancestor = node.parent(); ancestor; ancestor = ancestor->parent()) { if (ancestor->is_block_container() - || ancestor->display().is_flex_inside()) { + || ancestor->display().is_flex_inside() + || ancestor->display().is_grid_inside()) { return verify_cast(ancestor); } }