mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 05:01:05 +01:00 
			
		
		
		
	TestEngine: Added extra storage and global enable flag. Added missing ItemInfo hooks.
This commit is contained in:
		| @@ -1034,6 +1034,8 @@ struct ImGuiContext | |||||||
|     bool                    WithinFrameScope;                   // Set by NewFrame(), cleared by EndFrame() |     bool                    WithinFrameScope;                   // Set by NewFrame(), cleared by EndFrame() | ||||||
|     bool                    WithinFrameScopeWithImplicitWindow; // Set by NewFrame(), cleared by EndFrame() when the implicit debug window has been pushed |     bool                    WithinFrameScopeWithImplicitWindow; // Set by NewFrame(), cleared by EndFrame() when the implicit debug window has been pushed | ||||||
|     bool                    WithinEndChild;                     // Set within EndChild() |     bool                    WithinEndChild;                     // Set within EndChild() | ||||||
|  |     bool                    TestEngineHookItems;                // Will call test engine hooks ImGuiTestEngineHook_ItemAdd(), ImGuiTestEngineHook_ItemInfo(), ImGuiTestEngineHook_Log() | ||||||
|  |     void*                   TestEngine;                         // Test engine user data | ||||||
|  |  | ||||||
|     // Windows state |     // Windows state | ||||||
|     ImVector<ImGuiWindow*>  Windows;                            // Windows, sorted in display order, back to front |     ImVector<ImGuiWindow*>  Windows;                            // Windows, sorted in display order, back to front | ||||||
| @@ -1233,14 +1235,16 @@ struct ImGuiContext | |||||||
|     ImGuiContext(ImFontAtlas* shared_font_atlas) : BackgroundDrawList(&DrawListSharedData), ForegroundDrawList(&DrawListSharedData) |     ImGuiContext(ImFontAtlas* shared_font_atlas) : BackgroundDrawList(&DrawListSharedData), ForegroundDrawList(&DrawListSharedData) | ||||||
|     { |     { | ||||||
|         Initialized = false; |         Initialized = false; | ||||||
|  |         FontAtlasOwnedByContext = shared_font_atlas ? false : true; | ||||||
|         Font = NULL; |         Font = NULL; | ||||||
|         FontSize = FontBaseSize = 0.0f; |         FontSize = FontBaseSize = 0.0f; | ||||||
|         FontAtlasOwnedByContext = shared_font_atlas ? false : true; |  | ||||||
|         IO.Fonts = shared_font_atlas ? shared_font_atlas : IM_NEW(ImFontAtlas)(); |         IO.Fonts = shared_font_atlas ? shared_font_atlas : IM_NEW(ImFontAtlas)(); | ||||||
|         Time = 0.0f; |         Time = 0.0f; | ||||||
|         FrameCount = 0; |         FrameCount = 0; | ||||||
|         FrameCountEnded = FrameCountRendered = -1; |         FrameCountEnded = FrameCountRendered = -1; | ||||||
|         WithinFrameScope = WithinFrameScopeWithImplicitWindow = WithinEndChild = false; |         WithinFrameScope = WithinFrameScopeWithImplicitWindow = WithinEndChild = false; | ||||||
|  |         TestEngineHookItems = false; | ||||||
|  |         TestEngine = NULL; | ||||||
|  |  | ||||||
|         WindowsActiveCount = 0; |         WindowsActiveCount = 0; | ||||||
|         CurrentWindow = NULL; |         CurrentWindow = NULL; | ||||||
| @@ -1938,13 +1942,13 @@ extern void                 ImGuiTestEngineHook_PostNewFrame(ImGuiContext* ctx); | |||||||
| extern void                 ImGuiTestEngineHook_ItemAdd(ImGuiContext* ctx, const ImRect& bb, ImGuiID id); | extern void                 ImGuiTestEngineHook_ItemAdd(ImGuiContext* ctx, const ImRect& bb, ImGuiID id); | ||||||
| extern void                 ImGuiTestEngineHook_ItemInfo(ImGuiContext* ctx, ImGuiID id, const char* label, ImGuiItemStatusFlags flags); | extern void                 ImGuiTestEngineHook_ItemInfo(ImGuiContext* ctx, ImGuiID id, const char* label, ImGuiItemStatusFlags flags); | ||||||
| extern void                 ImGuiTestEngineHook_Log(ImGuiContext* ctx, const char* fmt, ...); | extern void                 ImGuiTestEngineHook_Log(ImGuiContext* ctx, const char* fmt, ...); | ||||||
| #define IMGUI_TEST_ENGINE_ITEM_ADD(_BB, _ID)                ImGuiTestEngineHook_ItemAdd(&g, _BB, _ID)               // Register item bounding box | #define IMGUI_TEST_ENGINE_ITEM_ADD(_BB,_ID)                 if (g.TestEngineHookItems) ImGuiTestEngineHook_ItemAdd(&g, _BB, _ID)               // Register item bounding box | ||||||
| #define IMGUI_TEST_ENGINE_ITEM_INFO(_ID, _LABEL, _FLAGS)    ImGuiTestEngineHook_ItemInfo(&g, _ID, _LABEL, _FLAGS)   // Register item label and status flags (optional) | #define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS)      if (g.TestEngineHookItems) ImGuiTestEngineHook_ItemInfo(&g, _ID, _LABEL, _FLAGS)   // Register item label and status flags (optional) | ||||||
| #define IMGUI_TEST_ENGINE_LOG(_FMT, ...)                    ImGuiTestEngineHook_Log(&g, _FMT, __VA_ARGS__)          // Custom log entry from user land into test log | #define IMGUI_TEST_ENGINE_LOG(_FMT,...)                     if (g.TestEngineHookItems) ImGuiTestEngineHook_Log(&g, _FMT, __VA_ARGS__)          // Custom log entry from user land into test log | ||||||
| #else | #else | ||||||
| #define IMGUI_TEST_ENGINE_ITEM_ADD(_BB, _ID)                do { } while (0) | #define IMGUI_TEST_ENGINE_ITEM_ADD(_BB,_ID)                 do { } while (0) | ||||||
| #define IMGUI_TEST_ENGINE_ITEM_INFO(_ID, _LABEL, _FLAGS)    do { } while (0) | #define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS)      do { } while (0) | ||||||
| #define IMGUI_TEST_ENGINE_LOG(_FMT, ...)                    do { } while (0) | #define IMGUI_TEST_ENGINE_LOG(_FMT,...)                     do { } while (0) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if defined(__clang__) | #if defined(__clang__) | ||||||
|   | |||||||
| @@ -486,7 +486,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | |||||||
|  |  | ||||||
| #ifdef IMGUI_ENABLE_TEST_ENGINE | #ifdef IMGUI_ENABLE_TEST_ENGINE | ||||||
|     if (id != 0 && window->DC.LastItemId != id) |     if (id != 0 && window->DC.LastItemId != id) | ||||||
|         ImGuiTestEngineHook_ItemAdd(&g, bb, id); |         IMGUI_TEST_ENGINE_ITEM_ADD(bb, id); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     bool pressed = false; |     bool pressed = false; | ||||||
| @@ -1134,6 +1134,7 @@ bool ImGui::RadioButton(const char* label, bool active) | |||||||
|     if (label_size.x > 0.0f) |     if (label_size.x > 0.0f) | ||||||
|         RenderText(ImVec2(check_bb.Max.x + style.ItemInnerSpacing.x, check_bb.Min.y + style.FramePadding.y), label); |         RenderText(ImVec2(check_bb.Max.x + style.ItemInnerSpacing.x, check_bb.Min.y + style.FramePadding.y), label); | ||||||
|  |  | ||||||
|  |     IMGUI_TEST_ENGINE_ITEM_INFO(id, label, window->DC.ItemFlags); | ||||||
|     return pressed; |     return pressed; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -7030,6 +7031,7 @@ bool    ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open, | |||||||
|     const ImGuiID id = TabBarCalcTabID(tab_bar, label); |     const ImGuiID id = TabBarCalcTabID(tab_bar, label); | ||||||
|  |  | ||||||
|     // If the user called us with *p_open == false, we early out and don't render. We make a dummy call to ItemAdd() so that attempts to use a contextual popup menu with an implicit ID won't use an older ID. |     // If the user called us with *p_open == false, we early out and don't render. We make a dummy call to ItemAdd() so that attempts to use a contextual popup menu with an implicit ID won't use an older ID. | ||||||
|  |     IMGUI_TEST_ENGINE_ITEM_INFO(id, label, window->DC.LastItemStatusFlags); | ||||||
|     if (p_open && !*p_open) |     if (p_open && !*p_open) | ||||||
|     { |     { | ||||||
|         PushItemFlag(ImGuiItemFlags_NoNav | ImGuiItemFlags_NoNavDefaultFocus, true); |         PushItemFlag(ImGuiItemFlags_NoNav | ImGuiItemFlags_NoNavDefaultFocus, true); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user