mirror of https://codeberg.org/topola/topola.git
fix(board/edit): Correctly removed nodes from pins
Was botched in previous commit.
This commit is contained in:
parent
c1880cfbb3
commit
1455da3ee5
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue