mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 05:01:05 +01:00 
			
		
		
		
	Internals: renamed TreeNodeBehaviorIsOpen() to TreeNodeUpdateNextOpen(). Added internal TreeNodeSetOpen(id). (#5423)
This commit is contained in:
		| @@ -2626,17 +2626,6 @@ namespace ImGui | |||||||
|     IMGUI_API void          PushItemFlag(ImGuiItemFlags option, bool enabled); |     IMGUI_API void          PushItemFlag(ImGuiItemFlags option, bool enabled); | ||||||
|     IMGUI_API void          PopItemFlag(); |     IMGUI_API void          PopItemFlag(); | ||||||
|  |  | ||||||
| #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS |  | ||||||
|     // Currently refactoring focus/nav/tabbing system |  | ||||||
|     // If you have old/custom copy-and-pasted widgets that used FocusableItemRegister(): |  | ||||||
|     //  (Old) IMGUI_VERSION_NUM  < 18209: using 'ItemAdd(....)'                              and 'bool tab_focused = FocusableItemRegister(...)' |  | ||||||
|     //  (Old) IMGUI_VERSION_NUM >= 18209: using 'ItemAdd(..., ImGuiItemAddFlags_Focusable)'  and 'bool tab_focused = (GetItemStatusFlags() & ImGuiItemStatusFlags_Focused) != 0' |  | ||||||
|     //  (New) IMGUI_VERSION_NUM >= 18413: using 'ItemAdd(..., ImGuiItemFlags_Inputable)'     and 'bool tab_focused = (GetItemStatusFlags() & ImGuiItemStatusFlags_FocusedTabbing) != 0 || g.NavActivateInputId == id' (WIP) |  | ||||||
|     // Widget code are simplified as there's no need to call FocusableItemUnregister() while managing the transition from regular widget to TempInputText() |  | ||||||
|     inline bool FocusableItemRegister(ImGuiWindow* window, ImGuiID id)  { IM_ASSERT(0); IM_UNUSED(window); IM_UNUSED(id); return false; } // -> pass ImGuiItemAddFlags_Inputable flag to ItemAdd() |  | ||||||
|     inline void FocusableItemUnregister(ImGuiWindow* window)            { IM_ASSERT(0); IM_UNUSED(window); }                              // -> unnecessary: TempInputText() uses ImGuiInputTextFlags_MergedItem |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|     // Logging/Capture |     // Logging/Capture | ||||||
|     IMGUI_API void          LogBegin(ImGuiLogType type, int auto_open_depth);           // -> BeginCapture() when we design v2 api, for now stay under the radar by using the old name. |     IMGUI_API void          LogBegin(ImGuiLogType type, int auto_open_depth);           // -> BeginCapture() when we design v2 api, for now stay under the radar by using the old name. | ||||||
|     IMGUI_API void          LogToBuffer(int auto_open_depth = -1);                      // Start logging/capturing to internal buffer |     IMGUI_API void          LogToBuffer(int auto_open_depth = -1);                      // Start logging/capturing to internal buffer | ||||||
| @@ -2844,8 +2833,9 @@ namespace ImGui | |||||||
|     IMGUI_API bool          SliderBehavior(const ImRect& bb, ImGuiID id, ImGuiDataType data_type, void* p_v, const void* p_min, const void* p_max, const char* format, ImGuiSliderFlags flags, ImRect* out_grab_bb); |     IMGUI_API bool          SliderBehavior(const ImRect& bb, ImGuiID id, ImGuiDataType data_type, void* p_v, const void* p_min, const void* p_max, const char* format, ImGuiSliderFlags flags, ImRect* out_grab_bb); | ||||||
|     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); |     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); | ||||||
|     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 bool          TreeNodeBehaviorIsOpen(ImGuiID id, ImGuiTreeNodeFlags flags = 0);                     // Consume previous SetNextItemOpen() data, if any. May return true when logging |  | ||||||
|     IMGUI_API void          TreePushOverrideID(ImGuiID id); |     IMGUI_API void          TreePushOverrideID(ImGuiID id); | ||||||
|  |     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. | ||||||
|  |  | ||||||
|     // Template functions are instantiated in imgui_widgets.cpp for a finite number of types. |     // Template functions are instantiated in imgui_widgets.cpp for a finite number of types. | ||||||
|     // To use them externally (for custom widget) you may need an "extern template" statement in your code in order to link to existing instances and silence Clang warnings (see #2036). |     // To use them externally (for custom widget) you may need an "extern template" statement in your code in order to link to existing instances and silence Clang warnings (see #2036). | ||||||
| @@ -2917,6 +2907,19 @@ namespace ImGui | |||||||
|     IMGUI_API void          DebugNodeViewport(ImGuiViewportP* viewport); |     IMGUI_API void          DebugNodeViewport(ImGuiViewportP* viewport); | ||||||
|     IMGUI_API void          DebugRenderViewportThumbnail(ImDrawList* draw_list, ImGuiViewportP* viewport, const ImRect& bb); |     IMGUI_API void          DebugRenderViewportThumbnail(ImDrawList* draw_list, ImGuiViewportP* viewport, const ImRect& bb); | ||||||
|  |  | ||||||
|  |     // Obsolete functions | ||||||
|  | #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS | ||||||
|  |     inline bool     TreeNodeBehaviorIsOpen(ImGuiID id, ImGuiTreeNodeFlags flags = 0)    { return TreeNodeUpdateNextOpen(id, flags); }   // Renamed in 1.89 | ||||||
|  |  | ||||||
|  |     // Refactored focus/nav/tabbing system in 1.82 and 1.84. If you have old/custom copy-and-pasted widgets that used FocusableItemRegister(): | ||||||
|  |     //  (Old) IMGUI_VERSION_NUM  < 18209: using 'ItemAdd(....)'                              and 'bool tab_focused = FocusableItemRegister(...)' | ||||||
|  |     //  (Old) IMGUI_VERSION_NUM >= 18209: using 'ItemAdd(..., ImGuiItemAddFlags_Focusable)'  and 'bool tab_focused = (GetItemStatusFlags() & ImGuiItemStatusFlags_Focused) != 0' | ||||||
|  |     //  (New) IMGUI_VERSION_NUM >= 18413: using 'ItemAdd(..., ImGuiItemFlags_Inputable)'     and 'bool tab_focused = (GetItemStatusFlags() & ImGuiItemStatusFlags_FocusedTabbing) != 0 || g.NavActivateInputId == id' (WIP) | ||||||
|  |     // Widget code are simplified as there's no need to call FocusableItemUnregister() while managing the transition from regular widget to TempInputText() | ||||||
|  |     inline bool     FocusableItemRegister(ImGuiWindow* window, ImGuiID id)              { IM_ASSERT(0); IM_UNUSED(window); IM_UNUSED(id); return false; } // -> pass ImGuiItemAddFlags_Inputable flag to ItemAdd() | ||||||
|  |     inline void     FocusableItemUnregister(ImGuiWindow* window)                        { IM_ASSERT(0); IM_UNUSED(window); }                              // -> unnecessary: TempInputText() uses ImGuiInputTextFlags_MergedItem | ||||||
|  | #endif | ||||||
|  |  | ||||||
| } // namespace ImGui | } // namespace ImGui | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5895,7 +5895,14 @@ 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::TreeNodeBehaviorIsOpen(ImGuiID id, ImGuiTreeNodeFlags flags) | void ImGui::TreeNodeSetOpen(ImGuiID id, bool open) | ||||||
|  | { | ||||||
|  |     ImGuiContext& g = *GImGui; | ||||||
|  |     ImGuiStorage* storage = g.CurrentWindow->DC.StateStorage; | ||||||
|  |     storage->SetInt(id, open ? 1 : 0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bool ImGui::TreeNodeUpdateNextOpen(ImGuiID id, ImGuiTreeNodeFlags flags) | ||||||
| { | { | ||||||
|     if (flags & ImGuiTreeNodeFlags_Leaf) |     if (flags & ImGuiTreeNodeFlags_Leaf) | ||||||
|         return true; |         return true; | ||||||
| @@ -5911,7 +5918,7 @@ bool ImGui::TreeNodeBehaviorIsOpen(ImGuiID id, ImGuiTreeNodeFlags flags) | |||||||
|         if (g.NextItemData.OpenCond & ImGuiCond_Always) |         if (g.NextItemData.OpenCond & ImGuiCond_Always) | ||||||
|         { |         { | ||||||
|             is_open = g.NextItemData.OpenVal; |             is_open = g.NextItemData.OpenVal; | ||||||
|             storage->SetInt(id, is_open); |             TreeNodeSetOpen(id, is_open); | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|         { |         { | ||||||
| @@ -5920,7 +5927,7 @@ bool ImGui::TreeNodeBehaviorIsOpen(ImGuiID id, ImGuiTreeNodeFlags flags) | |||||||
|             if (stored_value == -1) |             if (stored_value == -1) | ||||||
|             { |             { | ||||||
|                 is_open = g.NextItemData.OpenVal; |                 is_open = g.NextItemData.OpenVal; | ||||||
|                 storage->SetInt(id, is_open); |                 TreeNodeSetOpen(id, is_open); | ||||||
|             } |             } | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
| @@ -5986,7 +5993,7 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l | |||||||
|     // 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(). | ||||||
|     // This is currently only support 32 level deep and we are fine with (1 << Depth) overflowing into a zero. |     // This is currently only support 32 level deep and we are fine with (1 << Depth) overflowing into a zero. | ||||||
|     const bool is_leaf = (flags & ImGuiTreeNodeFlags_Leaf) != 0; |     const bool is_leaf = (flags & ImGuiTreeNodeFlags_Leaf) != 0; | ||||||
|     bool is_open = TreeNodeBehaviorIsOpen(id, flags); |     bool is_open = TreeNodeUpdateNextOpen(id, flags); | ||||||
|     if (is_open && !g.NavIdIsAlive && (flags & ImGuiTreeNodeFlags_NavLeftJumpsBackHere) && !(flags & ImGuiTreeNodeFlags_NoTreePushOnOpen)) |     if (is_open && !g.NavIdIsAlive && (flags & ImGuiTreeNodeFlags_NavLeftJumpsBackHere) && !(flags & ImGuiTreeNodeFlags_NoTreePushOnOpen)) | ||||||
|         window->DC.TreeJumpToParentOnPopMask |= (1 << window->DC.TreeDepth); |         window->DC.TreeJumpToParentOnPopMask |= (1 << window->DC.TreeDepth); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user