mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Layout: Implement CSS Grid using taffy
(#32619)
* Add layout.grid.enabled pref Signed-off-by: Nico Burns <nico@nicoburns.com> * Add taffy dependency Signed-off-by: Nico Burns <nico@nicoburns.com> * Import taffy <-> stylo conversion code from taffy_stylo crate Signed-off-by: Nico Burns <nico@nicoburns.com> * Add `Grid` variant to DisplayInside Signed-off-by: Nico Burns <nico@nicoburns.com> * Implement CSS Grid using Taffy Signed-off-by: Nico Burns <nico@nicoburns.com> Import full stylo_taffy crate Signed-off-by: Nico Burns <nico@nicoburns.com> Squashed PR feedback changes Deduplicate is_document_only_whitespace Signed-off-by: Nico Burns <nico@nicoburns.com> Import taffy::AvailableSpace Signed-off-by: Nico Burns <nico@nicoburns.com> Rename FlexContext to TaffyContainerContext Signed-off-by: Nico Burns <nico@nicoburns.com> Eliminate references to flexbox in taffy/layout module Signed-off-by: Nico Burns <nico@nicoburns.com> Use constructors for geom types Signed-off-by: Nico Burns <nico@nicoburns.com> Remove comment about abspos elements splitting contiguous text runs Signed-off-by: Nico Burns <nico@nicoburns.com> Remove reference to flexbox in taffy/construct Signed-off-by: Nico Burns <nico@nicoburns.com> Deduplicate construction of flexbox/grid containers Signed-off-by: Nico Burns <nico@nicoburns.com> Make anonymous text runs InFlow Signed-off-by: Nico Burns <nico@nicoburns.com> Remove commented code Signed-off-by: Nico Burns <nico@nicoburns.com> Update comments Signed-off-by: Nico Burns <nico@nicoburns.com> Inline/vendor the stylo/taffy interop code Signed-off-by: Nico Burns <nico@nicoburns.com> * Update test expectations Signed-off-by: Nico Burns <nico@nicoburns.com> * Fix nits from PR review Signed-off-by: Nico Burns <nico@nicoburns.com> --------- Signed-off-by: Nico Burns <nico@nicoburns.com>
This commit is contained in:
parent
339062c890
commit
6cbd89dbb0
508 changed files with 2057 additions and 10408 deletions
|
@ -23,6 +23,7 @@ use crate::replaced::ReplacedContent;
|
|||
use crate::sizing::{self, InlineContentSizesResult};
|
||||
use crate::style_ext::{AspectRatio, DisplayInside};
|
||||
use crate::table::Table;
|
||||
use crate::taffy::TaffyContainer;
|
||||
use crate::{
|
||||
ConstraintSpace, ContainingBlock, IndefiniteContainingBlock, LogicalVec2, SizeConstraint,
|
||||
};
|
||||
|
@ -58,6 +59,7 @@ pub(crate) struct ReplacedFormattingContext {
|
|||
pub(crate) enum NonReplacedFormattingContextContents {
|
||||
Flow(BlockFormattingContext),
|
||||
Flex(FlexContainer),
|
||||
Grid(TaffyContainer),
|
||||
Table(Table),
|
||||
// Other layout modes go here
|
||||
}
|
||||
|
@ -129,6 +131,14 @@ impl IndependentFormattingContext {
|
|||
),
|
||||
)
|
||||
},
|
||||
DisplayInside::Grid => {
|
||||
NonReplacedFormattingContextContents::Grid(TaffyContainer::construct(
|
||||
context,
|
||||
node_and_style_info,
|
||||
non_replaced_contents,
|
||||
propagated_text_decoration_line,
|
||||
))
|
||||
},
|
||||
DisplayInside::Flex => {
|
||||
NonReplacedFormattingContextContents::Flex(FlexContainer::construct(
|
||||
context,
|
||||
|
@ -268,6 +278,12 @@ impl NonReplacedFormattingContext {
|
|||
containing_block_for_children,
|
||||
containing_block,
|
||||
),
|
||||
NonReplacedFormattingContextContents::Grid(fc) => fc.layout(
|
||||
layout_context,
|
||||
positioning_context,
|
||||
containing_block_for_children,
|
||||
containing_block,
|
||||
),
|
||||
NonReplacedFormattingContextContents::Table(table) => table.layout(
|
||||
layout_context,
|
||||
positioning_context,
|
||||
|
@ -331,6 +347,7 @@ impl NonReplacedFormattingContextContents {
|
|||
.contents
|
||||
.inline_content_sizes(layout_context, constraint_space),
|
||||
Self::Flex(inner) => inner.inline_content_sizes(layout_context, constraint_space),
|
||||
Self::Grid(inner) => inner.inline_content_sizes(layout_context, constraint_space),
|
||||
Self::Table(table) => table.inline_content_sizes(layout_context, constraint_space),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue