fix: drop RefMut before calling refresh_preview to avoid panic
This commit is contained in:
+23
-17
@@ -153,7 +153,6 @@ pub fn build_editor_page(
|
||||
let composite = Rc::clone(&composite);
|
||||
let tag = tag.clone();
|
||||
let refresh_preview = refresh_preview.clone();
|
||||
let rebuild_swatches_for_closure = Rc::clone(&rebuild_swatches_for_closure);
|
||||
button.connect_rgba_notify(move |btn| {
|
||||
let new_rgba = btn.rgba();
|
||||
let new_hex = format!(
|
||||
@@ -162,15 +161,16 @@ pub fn build_editor_page(
|
||||
(new_rgba.green() * 255.0).round() as u8,
|
||||
(new_rgba.blue() * 255.0).round() as u8,
|
||||
);
|
||||
let mut comp = composite.borrow_mut();
|
||||
let changed = if is_emblem {
|
||||
comp.emblem.as_mut().unwrap().update_color(&tag, &new_hex).unwrap_or(false)
|
||||
} else {
|
||||
comp.bg.update_color(&tag, &new_hex).unwrap_or(false)
|
||||
let changed = {
|
||||
let mut comp = composite.borrow_mut();
|
||||
if is_emblem {
|
||||
comp.emblem.as_mut().unwrap().update_color(&tag, &new_hex).unwrap_or(false)
|
||||
} else {
|
||||
comp.bg.update_color(&tag, &new_hex).unwrap_or(false)
|
||||
}
|
||||
};
|
||||
if changed {
|
||||
refresh_preview();
|
||||
(rebuild_swatches_for_closure.borrow())();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -190,11 +190,14 @@ pub fn build_editor_page(
|
||||
let refresh_preview = refresh_preview.clone();
|
||||
let rebuild_swatches = Rc::clone(&rebuild_swatches);
|
||||
undo_button.connect_clicked(move |_| {
|
||||
let mut comp = composite.borrow_mut();
|
||||
let mut changed = comp.bg.undo().unwrap_or(false);
|
||||
if let Some(emblem) = &mut comp.emblem {
|
||||
changed |= emblem.undo().unwrap_or(false);
|
||||
}
|
||||
let changed = {
|
||||
let mut comp = composite.borrow_mut();
|
||||
let mut changed = comp.bg.undo().unwrap_or(false);
|
||||
if let Some(emblem) = &mut comp.emblem {
|
||||
changed |= emblem.undo().unwrap_or(false);
|
||||
}
|
||||
changed
|
||||
};
|
||||
if changed {
|
||||
refresh_preview();
|
||||
(rebuild_swatches.borrow())();
|
||||
@@ -206,11 +209,14 @@ pub fn build_editor_page(
|
||||
let refresh_preview = refresh_preview.clone();
|
||||
let rebuild_swatches = Rc::clone(&rebuild_swatches);
|
||||
redo_button.connect_clicked(move |_| {
|
||||
let mut comp = composite.borrow_mut();
|
||||
let mut changed = comp.bg.redo().unwrap_or(false);
|
||||
if let Some(emblem) = &mut comp.emblem {
|
||||
changed |= emblem.redo().unwrap_or(false);
|
||||
}
|
||||
let changed = {
|
||||
let mut comp = composite.borrow_mut();
|
||||
let mut changed = comp.bg.redo().unwrap_or(false);
|
||||
if let Some(emblem) = &mut comp.emblem {
|
||||
changed |= emblem.redo().unwrap_or(false);
|
||||
}
|
||||
changed
|
||||
};
|
||||
if changed {
|
||||
refresh_preview();
|
||||
(rebuild_swatches.borrow())();
|
||||
|
||||
Reference in New Issue
Block a user