This commit is contained in:
parent
9c2f6003e4
commit
ac7d6fb5ca
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user