diff --git a/examples/util/mod.rs b/examples/util/mod.rs index 91e1169..1d943c5 100644 --- a/examples/util/mod.rs +++ b/examples/util/mod.rs @@ -60,6 +60,6 @@ impl<'a> StatefulTree<'a> { } pub fn toggle(&mut self) { - self.state.toggle(); + self.state.toggle_selected(); } } diff --git a/src/lib.rs b/src/lib.rs index 5363aeb..4257de8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,14 +68,20 @@ impl TreeState { /// Toggles a tree node. /// If the node is in opened then it calls `close()`. Otherwise it calls `open()`. - pub fn toggle(&mut self) { - if self.opened.contains(&self.selected()) { - self.close(&self.selected()); + pub fn toggle(&mut self, identifier: TreeIdentifierVec) { + if self.opened.contains(&identifier) { + self.close(&identifier); } else { - self.open(self.selected()); + self.open(identifier); } } + /// Toggles the currently selected tree node. + /// See also [`toggle`](TreeState::toggle) + pub fn toggle_selected(&mut self) { + self.toggle(self.selected()); + } + pub fn close_all(&mut self) { self.opened.clear(); }