aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/positioned.rs
diff options
context:
space:
mode:
authortanishka <109246904+taniishkaaa@users.noreply.github.com>2024-11-18 20:36:23 +0530
committerGitHub <noreply@github.com>2024-11-18 15:06:23 +0000
commit11dfbd6f90bc7bc8b8d7485695548b5ad685d0e1 (patch)
treec178cc0b350954d35acbdd3ab76e47058bdcc4d2 /components/layout_2020/positioned.rs
parent997b6411c034a3d8ea3d285e24cca982d4b4f3e8 (diff)
downloadservo-11dfbd6f90bc7bc8b8d7485695548b5ad685d0e1.tar.gz
servo-11dfbd6f90bc7bc8b8d7485695548b5ad685d0e1.zip
layout: Use `Size::FitContent` when the alignment isn't `normal` or `stretch` for absolutely positioned elements (#34264)
* layout: Use Size::FitContent when the alignment isn't normal or stretch Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com> * Use unwrap_or_default() Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com> * Use self.alignment.value() Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com> * Refactor used_size to handle non-definite sizes Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com> * Include AlignFlags::Auto Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com> * Update test expectations Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com> --------- Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com>
Diffstat (limited to 'components/layout_2020/positioned.rs')
-rw-r--r--components/layout_2020/positioned.rs16
1 files changed, 11 insertions, 5 deletions
diff --git a/components/layout_2020/positioned.rs b/components/layout_2020/positioned.rs
index 72194636914..5a85733a603 100644
--- a/components/layout_2020/positioned.rs
+++ b/components/layout_2020/positioned.rs
@@ -846,10 +846,16 @@ impl<'a> AbsoluteAxisSolver<'a> {
let stretch_size = free_space -
self.computed_margin_start.auto_is(Au::zero) -
self.computed_margin_end.auto_is(Au::zero);
- let used_size = solve_size(Size::Stretch, stretch_size)
- .to_definite()
- .unwrap();
- free_space -= used_size;
+ let initial_behavior = match self.alignment.value() {
+ AlignFlags::STRETCH | AlignFlags::NORMAL | AlignFlags::AUTO => Size::Stretch,
+ _ => Size::FitContent,
+ };
+ let size = solve_size(initial_behavior, stretch_size);
+ if let Some(used_size) = size.to_definite() {
+ free_space -= used_size;
+ } else {
+ free_space = Au::zero();
+ }
let (margin_start, margin_end) =
match (self.computed_margin_start, self.computed_margin_end) {
(AuOrAuto::Auto, AuOrAuto::Auto) => {
@@ -872,7 +878,7 @@ impl<'a> AbsoluteAxisSolver<'a> {
};
AxisResult {
anchor: Anchor::Start(start),
- size: SizeConstraint::Definite(used_size),
+ size,
margin_start,
margin_end,
}