fix(board/edit): Correctly removed nodes from pins

Was botched in previous commit.
This commit is contained in:
Mikolaj Wielgus 2025-10-25 01:32:30 +02:00
parent c1880cfbb3
commit 1455da3ee5
1 changed files with 19 additions and 2 deletions

View File

@ -7,6 +7,8 @@
pub mod edit; pub mod edit;
use std::collections::btree_map::Entry as BTreeMapEntry;
use edit::{BoardDataEdit, BoardEdit}; use edit::{BoardDataEdit, BoardEdit};
pub use specctra_core::mesadata::AccessMesadata; pub use specctra_core::mesadata::AccessMesadata;
@ -402,8 +404,23 @@ impl<M: AccessMesadata> Board<M> {
} }
fn remove_pinname_node(&mut self, recorder: &mut BoardDataEdit, node: NodeIndex) { fn remove_pinname_node(&mut self, recorder: &mut BoardDataEdit, node: NodeIndex) {
let prev = self.pinname_nodes.remove_by_value(&node); let Some(prev) = self.pinname_nodes.remove_by_value(&node) else {
recorder.pinname_nodes.insert(node, (prev, None)); return;
};
let to_be_inserted = (Some(prev), None);
match recorder.pinname_nodes.entry(node) {
BTreeMapEntry::Occupied(mut occ) => {
if let (None, Some(_)) = occ.get() {
occ.remove();
} else {
*occ.get_mut() = to_be_inserted;
}
}
BTreeMapEntry::Vacant(vac) => {
vac.insert(to_be_inserted);
}
}
} }
pub fn apply_edit(&mut self, edit: &BoardEdit) { pub fn apply_edit(&mut self, edit: &BoardEdit) {