mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Distinguish cached inline_content_sizes()
from uncached ones (#34595)
Several structs and enums had a `inline_content_sizes()` method, but it wasn't clear which ones would try to cache the result, and which ones would always compute it. Therefore, this performs some clarifying renaming: - Cached ones stay as `inline_content_sizes()` - Uncached ones become `compute_inline_content_sizes()` Also, to simplify calls to `LayoutBoxBase::inline_content_sizes()`, `compute_inline_content_sizes()` is moved into a new trait. Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
874e106924
commit
f7e2ec3a0f
9 changed files with 152 additions and 125 deletions
|
@ -19,7 +19,7 @@ use crate::geom::LogicalSides;
|
|||
use crate::layout_box_base::LayoutBoxBase;
|
||||
use crate::positioned::PositioningContext;
|
||||
use crate::replaced::ReplacedContents;
|
||||
use crate::sizing::{self, InlineContentSizesResult};
|
||||
use crate::sizing::{self, ComputeInlineContentSizes, InlineContentSizesResult};
|
||||
use crate::style_ext::{AspectRatio, DisplayInside};
|
||||
use crate::table::Table;
|
||||
use crate::taffy::TaffyContainer;
|
||||
|
@ -187,15 +187,14 @@ impl IndependentFormattingContext {
|
|||
layout_context: &LayoutContext,
|
||||
constraint_space: &ConstraintSpace,
|
||||
) -> InlineContentSizesResult {
|
||||
self.base
|
||||
.inline_content_sizes(constraint_space, || match &self.contents {
|
||||
IndependentFormattingContextContents::NonReplaced(contents) => {
|
||||
contents.inline_content_sizes(layout_context, constraint_space)
|
||||
},
|
||||
IndependentFormattingContextContents::Replaced(contents) => {
|
||||
contents.inline_content_sizes(layout_context, constraint_space)
|
||||
},
|
||||
})
|
||||
match &self.contents {
|
||||
IndependentFormattingContextContents::NonReplaced(contents) => self
|
||||
.base
|
||||
.inline_content_sizes(layout_context, constraint_space, contents),
|
||||
IndependentFormattingContextContents::Replaced(contents) => self
|
||||
.base
|
||||
.inline_content_sizes(layout_context, constraint_space, contents),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn outer_inline_content_sizes(
|
||||
|
@ -270,8 +269,10 @@ impl IndependentNonReplacedContents {
|
|||
// TODO: support preferred aspect ratios on non-replaced boxes.
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn inline_content_sizes(
|
||||
impl ComputeInlineContentSizes for IndependentNonReplacedContents {
|
||||
fn compute_inline_content_sizes(
|
||||
&self,
|
||||
layout_context: &LayoutContext,
|
||||
constraint_space: &ConstraintSpace,
|
||||
|
@ -279,10 +280,16 @@ impl IndependentNonReplacedContents {
|
|||
match self {
|
||||
Self::Flow(inner) => inner
|
||||
.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),
|
||||
.compute_inline_content_sizes(layout_context, constraint_space),
|
||||
Self::Flex(inner) => {
|
||||
inner.compute_inline_content_sizes(layout_context, constraint_space)
|
||||
},
|
||||
Self::Grid(inner) => {
|
||||
inner.compute_inline_content_sizes(layout_context, constraint_space)
|
||||
},
|
||||
Self::Table(inner) => {
|
||||
inner.compute_inline_content_sizes(layout_context, constraint_space)
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue