From 8910f8fd1e79e328d692fb57e8421726f7e5bca9 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Sun, 4 Oct 2026 17:45:50 +0700 Subject: [PATCH] M3.12: the dialog Cancel button reuses dialogs::cancel; the Swatches panel no longer clones its selection every frame Co-Authored-By: Claude Opus 5.5 --- crates/ui-egui/src/dialogs/mod.rs | 5 +---- crates/ui-egui/src/panels/swatches.rs | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/crates/ui-egui/src/dialogs/mod.rs b/crates/ui-egui/src/dialogs/mod.rs index 4c451a32c..91e55b372 100644 --- a/crates/ui-egui/src/dialogs/mod.rs +++ b/crates/ui-egui/src/dialogs/mod.rs @@ -221,10 +221,7 @@ pub fn show(app: &mut VectorcraftApp, ctx: &egui::Context) { } app.ui.dialog = Some(d); if cancel { - if spec.preview { - let _ = app.session.cancel_interaction(); - } - app.ui.dialog = None; + self::cancel(app); } else if ok && let Err(e) = confirm(app) { app.status(e); } diff --git a/crates/ui-egui/src/panels/swatches.rs b/crates/ui-egui/src/panels/swatches.rs index b769e871b..957daf283 100644 --- a/crates/ui-egui/src/panels/swatches.rs +++ b/crates/ui-egui/src/panels/swatches.rs @@ -263,7 +263,8 @@ pub fn show(app: &mut VectorcraftApp, ui: &mut Ui) { }; let selected = selection(app, ui); // Without a selection the swatch of the active paint is highlighted. - let sel: Vec = if selected.is_empty() { active_swatch.into_iter().collect() } else { selected.clone() }; + let fallback: Vec = if selected.is_empty() { active_swatch.into_iter().collect() } else { vec![] }; + let sel = if selected.is_empty() { &fallback } else { &selected }; let is_sel = |name: &str| sel.iter().any(|s| s == name); let (tile, pitch) = view.tile(); let mut clicked: Option<(Entry, egui::Modifiers)> = None;