From c42ed86d12e59e2d0f15d92e9c094c2dac33d803 Mon Sep 17 00:00:00 2001 From: Mae PUGIN <48982737+mornepousse@users.noreply.github.com> Date: Tue, 7 Apr 2026 16:15:09 +0200 Subject: [PATCH] fix: Layer rename refreshes immediately - Preserve active layer flag when rebuilding layer model after rename - Add 100ms delay between rename command and layer names query (firmware needs time to save the new name) Co-Authored-By: Claude Opus 4.6 (1M context) --- src/main.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8d0fb5e..016dfe5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -481,6 +481,7 @@ fn main() { std::thread::spawn(move || { let mut ser = serial.lock().unwrap_or_else(|e| e.into_inner()); let _ = ser.send_command(&cmd); + std::thread::sleep(std::time::Duration::from_millis(100)); if let Ok(names) = ser.get_layer_names() { let _ = tx.send(BgMsg::LayerNames(names)); } @@ -1627,8 +1628,15 @@ fn main() { window.global::().set_status_text("Keymap loaded".into()); } BgMsg::LayerNames(names) => { - let new_layers = build_layer_model(&names); - window.global::().set_layers(ModelRc::from(new_layers)); + let active = window.global::().get_active_layer() as usize; + let layers: Vec = names.iter().enumerate().map(|(i, name)| LayerInfo { + index: i as i32, + name: SharedString::from(name.as_str()), + active: i == active, + }).collect(); + window.global::().set_layers( + ModelRc::from(Rc::new(VecModel::from(layers))) + ); } BgMsg::Disconnected => { let app = window.global::();