diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-06-27 19:02:23 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-27 19:02:23 +0200 |
| commit | d8d60207ef1833001196feccb84cc0c78bdd84df (patch) | |
| tree | cdc2130d8b4265c52863f10418842d188afb63e8 /src/layout/pad.rs | |
| parent | f64c772b6d969fa3aa1a7391a3d8118b21430434 (diff) | |
| parent | e9960b89424ab67e633076ccc9f8c420316b076a (diff) | |
Merge pull request #33 from typst/cache-patterns
A test framework for incremental compilation
Diffstat (limited to 'src/layout/pad.rs')
| -rw-r--r-- | src/layout/pad.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/layout/pad.rs b/src/layout/pad.rs index 9d432e79..9461f3ff 100644 --- a/src/layout/pad.rs +++ b/src/layout/pad.rs @@ -15,9 +15,11 @@ impl Layout for PadNode { ctx: &mut LayoutContext, regions: &Regions, ) -> Vec<Constrained<Rc<Frame>>> { - let mut regions = regions.map(|size| size - self.padding.resolve(size).size()); - - let mut frames = self.child.layout(ctx, ®ions); + let mut regions = regions.clone(); + let mut frames = self.child.layout( + ctx, + ®ions.map(|size| size - self.padding.resolve(size).size()), + ); for frame in &mut frames { let padded = solve(self.padding, frame.size); @@ -28,7 +30,7 @@ impl Layout for PadNode { let prev = std::mem::take(&mut frame.item); new.push_frame(origin, prev); - frame.constraints.mutate(padding.size() * -1.0); + frame.constraints.mutate(padding.size(), ®ions); if self.padding.left.is_relative() || self.padding.right.is_relative() { frame.constraints.base.horizontal = Some(regions.base.width); @@ -40,6 +42,7 @@ impl Layout for PadNode { regions.next(); *Rc::make_mut(&mut frame.item) = new; } + frames } } |
