tawasuyu

tawasuyu/taffy

A high performance rust-powered UI layout library

Rust 979HTML 924Markdown 12TOML 82994 Definiciones

fix alignment for wrap-reverse and absolute position

0f78dd01b3baedb33029d64d8d4c42ae5c0272ed · por Emil Sjölander · (hace 7 años) · padre f83ec92b8 · ver el árbol en este commit

Delta semántico · 1

src/algo.rs

1 archivos · +7 −5

diff --git a/src/algo.rs b/src/algo.rs
index 308981f3a..5ac0910b8 100644
--- a/src/algo.rs
+++ b/src/algo.rs
@@ -1011,18 +1011,20 @@ fn compute_internal(
             }
         };
 
+        let free_space = container_cross_size - result.size.cross(node.flex_direction);
+
         let offset_cross = if start_cross.is_finite() {
             start_cross
         } else if end_cross.is_finite() {
-            container_cross_size - end_cross - result.size.cross(node.flex_direction)
+            free_space - end_cross
         } else {
             match child.align_self(node) {
                 style::AlignSelf::Auto => 0.0, // Should never happen
-                style::AlignSelf::FlexStart => 0.0,
-                style::AlignSelf::FlexEnd => container_cross_size - result.size.cross(node.flex_direction),
-                style::AlignSelf::Center => container_cross_size / 2.0 - result.size.cross(node.flex_direction) / 2.0,
+                style::AlignSelf::FlexStart => if wrap_reverse { free_space } else { 0.0 },
+                style::AlignSelf::FlexEnd => if wrap_reverse { 0.0 } else { free_space },
+                style::AlignSelf::Center => free_space / 2.0,
                 style::AlignSelf::Baseline => free_space / 2.0, // Treat as center for now until we have baseline support
-                style::AlignSelf::Stretch => 0.0,
+                style::AlignSelf::Stretch => if wrap_reverse { free_space } else { 0.0 },
             }
         };