diff --git a/egui_node_graph/src/editor_ui.rs b/egui_node_graph/src/editor_ui.rs index 8af69f2..d3e9369 100644 --- a/egui_node_graph/src/editor_ui.rs +++ b/egui_node_graph/src/editor_ui.rs @@ -771,7 +771,13 @@ where // --- Interaction --- // Titlebar buttons - if Self::close_button(ui, outer_rect).clicked() { + let can_delete = self.graph.nodes[self.node_id].user_data.can_delete( + self.node_id, + self.graph, + user_state, + ); + + if can_delete && Self::close_button(ui, outer_rect).clicked() { responses.push(NodeResponse::DeleteNodeUi(self.node_id)); }; diff --git a/egui_node_graph/src/traits.rs b/egui_node_graph/src/traits.rs index 6f02320..a9cf2ef 100644 --- a/egui_node_graph/src/traits.rs +++ b/egui_node_graph/src/traits.rs @@ -102,6 +102,15 @@ where ) -> Option { None } + + fn can_delete( + &self, + _node_id: NodeId, + _graph: &Graph, + _user_state: &mut Self::UserState, + ) -> bool { + true + } } /// This trait can be implemented by any user type. The trait tells the library