diff --git a/src/ui/editor.rs b/src/ui/editor.rs index 233c2b5..a71c3c4 100644 --- a/src/ui/editor.rs +++ b/src/ui/editor.rs @@ -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(); } });