diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-05-26 11:59:53 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-05-26 11:59:53 +0200 |
| commit | 66d8f4569a9f13270c5f477e0730f127a22333e2 (patch) | |
| tree | ebb60254e69d7f65ec2245aeae3543f6efff0cbb /src/model/layout.rs | |
| parent | 99cb655832161d4ebec73273a15453a8f6acc1b7 (diff) | |
Locate me!
Diffstat (limited to 'src/model/layout.rs')
| -rw-r--r-- | src/model/layout.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/model/layout.rs b/src/model/layout.rs index 6dfbcb90..49720be4 100644 --- a/src/model/layout.rs +++ b/src/model/layout.rs @@ -221,13 +221,19 @@ impl Layout for LayoutNode { regions: &Regions, styles: StyleChain, ) -> TypResult<Vec<Arc<Frame>>> { - crate::memo::memoized( - (self, ctx, regions, styles), + let (result, cursor) = crate::memo::memoized( + (self, &mut *ctx, regions, styles), |(node, ctx, regions, styles)| { let entry = StyleEntry::Barrier(Barrier::new(node.id())); - node.0.layout(ctx, regions, entry.chain(&styles)) + let result = node.0.layout(ctx, regions, entry.chain(&styles)); + (result, ctx.pins.cursor()) }, - ) + ); + + // Replay the side effect in case of caching. This should currently be + // more or less the only relevant side effect on the context. + ctx.pins.jump(cursor); + result } fn pack(self) -> LayoutNode { |
