diff --git a/imgui-examples/examples/test_window_impl.rs b/imgui-examples/examples/test_window_impl.rs index c89f068..2ff4d34 100644 --- a/imgui-examples/examples/test_window_impl.rs +++ b/imgui-examples/examples/test_window_impl.rs @@ -389,7 +389,8 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) { } if CollapsingHeader::new("Widgets").build(ui) { if let Some(_t) = ui.tree_node("Tree") { - for i in 0..5 { + let num_child = 4; + for i in 0..num_child { if let Some(_t) = ui.tree_node(format!("Child {}", i)) { ui.text("blah blah"); ui.same_line(); @@ -398,6 +399,20 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) { } } } + + { + let tree_node_stack = ui.tree_node_config("##HideTreeNodeLabel") + .allow_item_overlap(true) + .push(); + ui.same_line(); + if ui.small_button(format!("Child {} is a button", num_child)) { + println!("TreeNode Button pressed."); + } + + if tree_node_stack.is_some() { + ui.text("blah blah") + } + } } if let Some(_t) = ui.tree_node("Bullets") { diff --git a/imgui/src/widget/tree.rs b/imgui/src/widget/tree.rs index 5a707c8..118c93f 100644 --- a/imgui/src/widget/tree.rs +++ b/imgui/src/widget/tree.rs @@ -287,17 +287,16 @@ impl<'a, T: AsRef, L: AsRef> TreeNode<'a, T, L> { sys::igSetNextItemOpen(self.opened, self.opened_cond as i32); } match self.id { - TreeNodeId::Str(id) => { - let (id, label) = match self.label { - Some(label) => self.ui.scratch_txt_two(id, label), - None => { - let v = self.ui.scratch_txt(id); - (v, v) - } - }; - - sys::igTreeNodeExStrStr(id, self.flags.bits() as i32, fmt_ptr(), label) - } + TreeNodeId::Str(id) => match self.label { + Some(label) => { + let (id, label) = self.ui.scratch_txt_two(id, label); + sys::igTreeNodeExStrStr(id, self.flags.bits() as i32, fmt_ptr(), label) + } + None => { + let id = self.ui.scratch_txt(id); + sys::igTreeNodeExStr(id, self.flags.bits() as i32) + } + }, TreeNodeId::Ptr(id) => sys::igTreeNodeExPtr( id, self.flags.bits() as i32,