1
0
mirror of https://github.com/emilk/egui.git synced 2026-09-02 06:40:06 -04:00

Warn about missing nodes

This commit is contained in:
Emil Ernerfeldt
2023-05-04 16:10:06 +02:00
parent 051ec14b98
commit 6f69a143fe
4 changed files with 14 additions and 4 deletions

1
Cargo.lock generated
View File

@@ -1135,6 +1135,7 @@ dependencies = [
"eframe", "eframe",
"egui_extras", "egui_extras",
"env_logger", "env_logger",
"log",
"serde", "serde",
] ]

View File

@@ -12,9 +12,13 @@ pub trait Behavior<Leaf> {
fn tab_text_for_leaf(&mut self, leaf: &Leaf) -> WidgetText; fn tab_text_for_leaf(&mut self, leaf: &Leaf) -> WidgetText;
fn tab_text_for_node(&mut self, nodes: &Nodes<Leaf>, node_id: NodeId) -> WidgetText { fn tab_text_for_node(&mut self, nodes: &Nodes<Leaf>, node_id: NodeId) -> WidgetText {
match &nodes.nodes[&node_id] { if let Some(node) = nodes.nodes.get(&node_id) {
Node::Leaf(leaf) => self.tab_text_for_leaf(leaf), match node {
Node::Branch(branch) => format!("{:?}", branch.get_layout()).into(), Node::Leaf(leaf) => self.tab_text_for_leaf(leaf),
Node::Branch(branch) => format!("{:?}", branch.get_layout()).into(),
}
} else {
"MISSING NODE".into()
} }
} }

View File

@@ -15,4 +15,5 @@ eframe = { path = "../../crates/eframe", features = [
] } ] }
egui_extras = { path = "../../crates/egui_extras" } egui_extras = { path = "../../crates/egui_extras" }
env_logger = "0.10" env_logger = "0.10"
log = "0.4"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }

View File

@@ -244,12 +244,16 @@ fn tree_ui(
nodes: &mut dock::Nodes<View>, nodes: &mut dock::Nodes<View>,
node_id: dock::NodeId, node_id: dock::NodeId,
) { ) {
// Get the name BEFORE we remove the node below
let text = format!( let text = format!(
"{} - {node_id:?}", "{} - {node_id:?}",
behavior.tab_text_for_node(nodes, node_id).text() behavior.tab_text_for_node(nodes, node_id).text()
); );
let Some(mut node) = nodes.nodes.remove(&node_id) else { return; }; let Some(mut node) = nodes.nodes.remove(&node_id) else {
log::warn!("Missing node {node_id:?}");
return;
};
egui::CollapsingHeader::new(text) egui::CollapsingHeader::new(text)
.id_source((node_id, "tree")) .id_source((node_id, "tree"))