style: format precise property binding integration
Verify Tessera GUI / verify (push) Successful in 1m48s
Verify Tessera GUI / verify (push) Successful in 1m48s
This commit is contained in:
+10
-6
@@ -144,11 +144,13 @@ pub fn refresh(
|
||||
.map_err(|_| anyhow::anyhow!("binding cache poisoned"))?
|
||||
.clone();
|
||||
if cached.as_ref().is_some_and(|cached| {
|
||||
cached.reads.iter().all(|read| {
|
||||
vm.object_store().read_dependency_valid(read)
|
||||
}) && vm
|
||||
.get_attr(target, &binding.field)
|
||||
.is_ok_and(|value| value == cached.output)
|
||||
cached
|
||||
.reads
|
||||
.iter()
|
||||
.all(|read| vm.object_store().read_dependency_valid(read))
|
||||
&& vm
|
||||
.get_attr(target, &binding.field)
|
||||
.is_ok_and(|value| value == cached.output)
|
||||
}) {
|
||||
continue;
|
||||
}
|
||||
@@ -168,7 +170,9 @@ pub fn refresh(
|
||||
)
|
||||
.map_err(|error| crate::endor_host::runtime_error(vm, error))?;
|
||||
let applied: Result<()> = (|| {
|
||||
let reads = reads.dependencies.into_iter()
|
||||
let reads = reads
|
||||
.dependencies
|
||||
.into_iter()
|
||||
.filter(|read| !host_desktops.contains(&read.object()))
|
||||
.collect();
|
||||
let (_, data) = block::resolve(vm.object_store(), target)?;
|
||||
|
||||
+27
-7
@@ -6187,22 +6187,42 @@ rect.bind("width",readWidth)
|
||||
hidden.bind("width",readWidth)
|
||||
page = Page()
|
||||
page.render(rect)
|
||||
"#, "app.main", 903, 1,
|
||||
).unwrap();
|
||||
"#,
|
||||
"app.main",
|
||||
903,
|
||||
1,
|
||||
)
|
||||
.unwrap();
|
||||
let count = |session: &mut ReplSession| {
|
||||
session.execute("ui.stats().bindingEvaluations", "app.main").unwrap().value
|
||||
.parse::<usize>().unwrap()
|
||||
session
|
||||
.execute("ui.stats().bindingEvaluations", "app.main")
|
||||
.unwrap()
|
||||
.value
|
||||
.parse::<usize>()
|
||||
.unwrap()
|
||||
};
|
||||
let baseline = count(&mut session);
|
||||
assert_eq!(baseline, 2);
|
||||
assert!(session.execute("42", "app.main").unwrap().document.is_none());
|
||||
assert!(
|
||||
session
|
||||
.execute("42", "app.main")
|
||||
.unwrap()
|
||||
.document
|
||||
.is_none()
|
||||
);
|
||||
assert_eq!(count(&mut session), baseline);
|
||||
session.execute("size = 120", "app.main").unwrap();
|
||||
assert_eq!(count(&mut session), baseline + 2);
|
||||
assert_eq!(session.execute("hidden.width", "app.main").unwrap().value, "120");
|
||||
assert_eq!(
|
||||
session.execute("hidden.width", "app.main").unwrap().value,
|
||||
"120"
|
||||
);
|
||||
session.execute("rect.width = 200", "app.main").unwrap();
|
||||
assert_eq!(count(&mut session), baseline + 3);
|
||||
assert_eq!(session.execute("rect.width", "app.main").unwrap().value, "120");
|
||||
assert_eq!(
|
||||
session.execute("rect.width", "app.main").unwrap().value,
|
||||
"120"
|
||||
);
|
||||
assert_eq!(count(&mut session), baseline + 3);
|
||||
}
|
||||
|
||||
|
||||
+6
-2
@@ -2474,12 +2474,16 @@ impl UiBridge {
|
||||
}
|
||||
pub fn refresh_bindings(&self, vm: &mut Vm) -> Result<()> {
|
||||
let (nodes, desktops) = {
|
||||
let state = self.session.lock()
|
||||
let state = self
|
||||
.session
|
||||
.lock()
|
||||
.map_err(|_| anyhow::anyhow!("UI session poisoned"))?;
|
||||
(state.nodes.clone(), state.host_desktops())
|
||||
};
|
||||
let evaluated = crate::binding::refresh(vm, &nodes, &desktops)?;
|
||||
let mut state = self.session.lock()
|
||||
let mut state = self
|
||||
.session
|
||||
.lock()
|
||||
.map_err(|_| anyhow::anyhow!("UI session poisoned"))?;
|
||||
state.binding_evaluations = state.binding_evaluations.saturating_add(evaluated);
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user