fix: drop RefCell borrow in slider callbacks before calling refresh_preview

This commit is contained in:
2026-08-03 23:05:17 -04:00
parent e9b80817f9
commit 35f0af2188
+30 -12
View File
@@ -129,10 +129,16 @@ pub fn build_editor_page(
let composite = Rc::clone(&composite);
let refresh_preview = refresh_preview.clone();
scale_x.connect_value_changed(move |s| {
let mut comp = composite.borrow_mut();
if (comp.emblem_x - s.value()).abs() > f64::EPSILON {
comp.emblem_x = s.value();
comp.is_modified = true;
let mut changed = false;
{
let mut comp = composite.borrow_mut();
if (comp.emblem_x - s.value()).abs() > f64::EPSILON {
comp.emblem_x = s.value();
comp.is_modified = true;
changed = true;
}
}
if changed {
refresh_preview();
}
});
@@ -141,10 +147,16 @@ pub fn build_editor_page(
let composite = Rc::clone(&composite);
let refresh_preview = refresh_preview.clone();
scale_y.connect_value_changed(move |s| {
let mut comp = composite.borrow_mut();
if (comp.emblem_y - s.value()).abs() > f64::EPSILON {
comp.emblem_y = s.value();
comp.is_modified = true;
let mut changed = false;
{
let mut comp = composite.borrow_mut();
if (comp.emblem_y - s.value()).abs() > f64::EPSILON {
comp.emblem_y = s.value();
comp.is_modified = true;
changed = true;
}
}
if changed {
refresh_preview();
}
});
@@ -153,10 +165,16 @@ pub fn build_editor_page(
let composite = Rc::clone(&composite);
let refresh_preview = refresh_preview.clone();
scale_size.connect_value_changed(move |s| {
let mut comp = composite.borrow_mut();
if (comp.emblem_size - s.value()).abs() > f64::EPSILON {
comp.emblem_size = s.value();
comp.is_modified = true;
let mut changed = false;
{
let mut comp = composite.borrow_mut();
if (comp.emblem_size - s.value()).abs() > f64::EPSILON {
comp.emblem_size = s.value();
comp.is_modified = true;
changed = true;
}
}
if changed {
refresh_preview();
}
});