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