mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	This commit is contained in:
		| @@ -3469,6 +3469,7 @@ namespace ImGui | |||||||
|     IMGUI_API bool          SplitterBehavior(const ImRect& bb, ImGuiID id, ImGuiAxis axis, float* size1, float* size2, float min_size1, float min_size2, float hover_extend = 0.0f, float hover_visibility_delay = 0.0f, ImU32 bg_col = 0); |     IMGUI_API bool          SplitterBehavior(const ImRect& bb, ImGuiID id, ImGuiAxis axis, float* size1, float* size2, float min_size1, float min_size2, float hover_extend = 0.0f, float hover_visibility_delay = 0.0f, ImU32 bg_col = 0); | ||||||
|     IMGUI_API bool          TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* label, const char* label_end = NULL); |     IMGUI_API bool          TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* label, const char* label_end = NULL); | ||||||
|     IMGUI_API void          TreePushOverrideID(ImGuiID id); |     IMGUI_API void          TreePushOverrideID(ImGuiID id); | ||||||
|  |     IMGUI_API bool          TreeNodeIsOpen(ImGuiID id); | ||||||
|     IMGUI_API void          TreeNodeSetOpen(ImGuiID id, bool open); |     IMGUI_API void          TreeNodeSetOpen(ImGuiID id, bool open); | ||||||
|     IMGUI_API bool          TreeNodeUpdateNextOpen(ImGuiID id, ImGuiTreeNodeFlags flags);   // Return open state. Consume previous SetNextItemOpen() data, if any. May return true when logging. |     IMGUI_API bool          TreeNodeUpdateNextOpen(ImGuiID id, ImGuiTreeNodeFlags flags);   // Return open state. Consume previous SetNextItemOpen() data, if any. May return true when logging. | ||||||
|     IMGUI_API void          SetNextItemSelectionUserData(ImGuiSelectionUserData selection_user_data); |     IMGUI_API void          SetNextItemSelectionUserData(ImGuiSelectionUserData selection_user_data); | ||||||
|   | |||||||
| @@ -6257,6 +6257,13 @@ bool ImGui::TreeNodeExV(const void* ptr_id, ImGuiTreeNodeFlags flags, const char | |||||||
|     return TreeNodeBehavior(window->GetID(ptr_id), flags, label, label_end); |     return TreeNodeBehavior(window->GetID(ptr_id), flags, label, label_end); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | bool ImGui::TreeNodeIsOpen(ImGuiID id) | ||||||
|  | { | ||||||
|  |     ImGuiContext& g = *GImGui; | ||||||
|  |     ImGuiStorage* storage = g.CurrentWindow->DC.StateStorage; | ||||||
|  |     return storage->GetInt(id, 0) != 0; | ||||||
|  | } | ||||||
|  |  | ||||||
| void ImGui::TreeNodeSetOpen(ImGuiID id, bool open) | void ImGui::TreeNodeSetOpen(ImGuiID id, bool open) | ||||||
| { | { | ||||||
|     ImGuiContext& g = *GImGui; |     ImGuiContext& g = *GImGui; | ||||||
| @@ -6269,7 +6276,7 @@ bool ImGui::TreeNodeUpdateNextOpen(ImGuiID id, ImGuiTreeNodeFlags flags) | |||||||
|     if (flags & ImGuiTreeNodeFlags_Leaf) |     if (flags & ImGuiTreeNodeFlags_Leaf) | ||||||
|         return true; |         return true; | ||||||
|  |  | ||||||
|     // We only write to the tree storage if the user clicks (or explicitly use the SetNextItemOpen function) |     // We only write to the tree storage if the user clicks, or explicitly use the SetNextItemOpen function | ||||||
|     ImGuiContext& g = *GImGui; |     ImGuiContext& g = *GImGui; | ||||||
|     ImGuiWindow* window = g.CurrentWindow; |     ImGuiWindow* window = g.CurrentWindow; | ||||||
|     ImGuiStorage* storage = window->DC.StateStorage; |     ImGuiStorage* storage = window->DC.StateStorage; | ||||||
| @@ -6311,6 +6318,7 @@ bool ImGui::TreeNodeUpdateNextOpen(ImGuiID id, ImGuiTreeNodeFlags flags) | |||||||
| } | } | ||||||
|  |  | ||||||
| // Store ImGuiTreeNodeStackData for just submitted node. | // Store ImGuiTreeNodeStackData for just submitted node. | ||||||
|  | // Currently only supports 32 level deep and we are fine with (1 << Depth) overflowing into a zero, easy to increase. | ||||||
| static void TreeNodeStoreStackData(ImGuiTreeNodeFlags flags) | static void TreeNodeStoreStackData(ImGuiTreeNodeFlags flags) | ||||||
| { | { | ||||||
|     ImGuiContext& g = *GImGui; |     ImGuiContext& g = *GImGui; | ||||||
| @@ -6393,7 +6401,6 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l | |||||||
|     // Store data for the current depth to allow returning to this node from any child item. |     // Store data for the current depth to allow returning to this node from any child item. | ||||||
|     // For this purpose we essentially compare if g.NavIdIsAlive went from 0 to 1 between TreeNode() and TreePop(). |     // For this purpose we essentially compare if g.NavIdIsAlive went from 0 to 1 between TreeNode() and TreePop(). | ||||||
|     // It will become tempting to enable ImGuiTreeNodeFlags_NavLeftJumpsBackHere by default or move it to ImGuiStyle. |     // It will become tempting to enable ImGuiTreeNodeFlags_NavLeftJumpsBackHere by default or move it to ImGuiStyle. | ||||||
|     // Currently only supports 32 level deep and we are fine with (1 << Depth) overflowing into a zero, easy to increase. |  | ||||||
|     bool store_tree_node_stack_data = false; |     bool store_tree_node_stack_data = false; | ||||||
|     if (!(flags & ImGuiTreeNodeFlags_NoTreePushOnOpen)) |     if (!(flags & ImGuiTreeNodeFlags_NoTreePushOnOpen)) | ||||||
|     { |     { | ||||||
| @@ -6517,7 +6524,6 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l | |||||||
|             text_pos.x -= text_offset_x -padding.x; |             text_pos.x -= text_offset_x -padding.x; | ||||||
|         if (flags & ImGuiTreeNodeFlags_ClipLabelForTrailingButton) |         if (flags & ImGuiTreeNodeFlags_ClipLabelForTrailingButton) | ||||||
|             frame_bb.Max.x -= g.FontSize + style.FramePadding.x; |             frame_bb.Max.x -= g.FontSize + style.FramePadding.x; | ||||||
|  |  | ||||||
|         if (g.LogEnabled) |         if (g.LogEnabled) | ||||||
|             LogSetNextTextDecoration("###", "###"); |             LogSetNextTextDecoration("###", "###"); | ||||||
|     } |     } | ||||||
| @@ -6550,7 +6556,7 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l | |||||||
|     if (store_tree_node_stack_data && is_open) |     if (store_tree_node_stack_data && is_open) | ||||||
|         TreeNodeStoreStackData(flags); // Call before TreePushOverrideID() |         TreeNodeStoreStackData(flags); // Call before TreePushOverrideID() | ||||||
|     if (is_open && !(flags & ImGuiTreeNodeFlags_NoTreePushOnOpen)) |     if (is_open && !(flags & ImGuiTreeNodeFlags_NoTreePushOnOpen)) | ||||||
|         TreePushOverrideID(id); |         TreePushOverrideID(id); // Could use TreePush(label) but this avoid computing twice | ||||||
|  |  | ||||||
|     IMGUI_TEST_ENGINE_ITEM_INFO(id, label, g.LastItemData.StatusFlags | (is_leaf ? 0 : ImGuiItemStatusFlags_Openable) | (is_open ? ImGuiItemStatusFlags_Opened : 0)); |     IMGUI_TEST_ENGINE_ITEM_INFO(id, label, g.LastItemData.StatusFlags | (is_leaf ? 0 : ImGuiItemStatusFlags_Openable) | (is_open ? ImGuiItemStatusFlags_Opened : 0)); | ||||||
|     return is_open; |     return is_open; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 ocornut
					ocornut