MCPcopy Create free account
hub / github.com/RenderKit/embree / TreeNodeUpdateNextOpen

Method TreeNodeUpdateNextOpen

tutorials/common/imgui/imgui_widgets.cpp:5896–5940  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5894}
5895
5896bool ImGui::TreeNodeUpdateNextOpen(ImGuiID id, ImGuiTreeNodeFlags flags)
5897{
5898 if (flags & ImGuiTreeNodeFlags_Leaf)
5899 return true;
5900
5901 // We only write to the tree storage if the user clicks (or explicitly use the SetNextItemOpen function)
5902 ImGuiContext& g = *GImGui;
5903 ImGuiWindow* window = g.CurrentWindow;
5904 ImGuiStorage* storage = window->DC.StateStorage;
5905
5906 bool is_open;
5907 if (g.NextItemData.Flags & ImGuiNextItemDataFlags_HasOpen)
5908 {
5909 if (g.NextItemData.OpenCond & ImGuiCond_Always)
5910 {
5911 is_open = g.NextItemData.OpenVal;
5912 TreeNodeSetOpen(id, is_open);
5913 }
5914 else
5915 {
5916 // We treat ImGuiCond_Once and ImGuiCond_FirstUseEver the same because tree node state are not saved persistently.
5917 const int stored_value = storage->GetInt(id, -1);
5918 if (stored_value == -1)
5919 {
5920 is_open = g.NextItemData.OpenVal;
5921 TreeNodeSetOpen(id, is_open);
5922 }
5923 else
5924 {
5925 is_open = stored_value != 0;
5926 }
5927 }
5928 }
5929 else
5930 {
5931 is_open = storage->GetInt(id, (flags & ImGuiTreeNodeFlags_DefaultOpen) ? 1 : 0) != 0;
5932 }
5933
5934 // When logging is enabled, we automatically expand tree nodes (but *NOT* collapsing headers.. seems like sensible behavior).
5935 // NB- If we are above max depth we still allow manually opened nodes to be logged.
5936 if (g.LogEnabled && !(flags & ImGuiTreeNodeFlags_NoAutoOpenOnLog) && (window->DC.TreeDepth - g.LogDepthRef) < g.LogDepthToExpand)
5937 is_open = true;
5938
5939 return is_open;
5940}
5941
5942bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* label, const char* label_end)
5943{

Callers

nothing calls this directly

Calls 1

GetIntMethod · 0.80

Tested by

no test coverage detected