summaryrefslogtreecommitdiff
path: root/src/model/layout.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-05-26 11:59:53 +0200
committerLaurenz <laurmaedje@gmail.com>2022-05-26 11:59:53 +0200
commit66d8f4569a9f13270c5f477e0730f127a22333e2 (patch)
treeebb60254e69d7f65ec2245aeae3543f6efff0cbb /src/model/layout.rs
parent99cb655832161d4ebec73273a15453a8f6acc1b7 (diff)
Locate me!
Diffstat (limited to 'src/model/layout.rs')
-rw-r--r--src/model/layout.rs14
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 {