Tests: Reworking hook prototypes for imgui-test to be faster and multi-context friendly.
diff --git a/imgui.cpp b/imgui.cpp
index 3f9ce8b..bcd4daf 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -2697,7 +2697,8 @@
window->DC.LastItemStatusFlags = ImGuiItemStatusFlags_None;
#ifdef IMGUI_ENABLE_TEST_ENGINE
- ImGuiTestEngineHook_ItemAdd(bb, id);
+ if (id != 0)
+ ImGuiTestEngineHook_ItemAdd(&g, bb, id);
#endif
// Clipping test
@@ -3251,7 +3252,7 @@
ImGuiContext& g = *GImGui;
#ifdef IMGUI_ENABLE_TEST_ENGINE
- ImGuiTestEngineHook_PreNewFrame();
+ ImGuiTestEngineHook_PreNewFrame(&g);
#endif
// Check user data
@@ -3427,7 +3428,7 @@
g.FrameScopePushedImplicitWindow = true;
#ifdef IMGUI_ENABLE_TEST_ENGINE
- ImGuiTestEngineHook_PostNewFrame();
+ ImGuiTestEngineHook_PostNewFrame(&g);
#endif
}
diff --git a/imgui_internal.h b/imgui_internal.h
index 7429c34..97520ce 100644
--- a/imgui_internal.h
+++ b/imgui_internal.h
@@ -1429,11 +1429,11 @@
// Test engine hooks (imgui-test)
//#define IMGUI_ENABLE_TEST_ENGINE
#ifdef IMGUI_ENABLE_TEST_ENGINE
-extern void ImGuiTestEngineHook_PreNewFrame();
-extern void ImGuiTestEngineHook_PostNewFrame();
-extern void ImGuiTestEngineHook_ItemAdd(const ImRect& bb, ImGuiID id);
-extern void ImGuiTestEngineHook_ItemInfo(ImGuiID id, const char* label, int flags);
-#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID, _LABEL, _FLAGS) ImGuiTestEngineHook_ItemInfo(_ID, _LABEL, _FLAGS) // Register status flags
+extern void ImGuiTestEngineHook_PreNewFrame(ImGuiContext* ctx);
+extern void ImGuiTestEngineHook_PostNewFrame(ImGuiContext* ctx);
+extern void ImGuiTestEngineHook_ItemAdd(ImGuiContext* ctx, const ImRect& bb, ImGuiID id);
+extern void ImGuiTestEngineHook_ItemInfo(ImGuiContext* ctx, ImGuiID id, const char* label, int flags);
+#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID, _LABEL, _FLAGS) ImGuiTestEngineHook_ItemInfo(&g, _ID, _LABEL, _FLAGS) // Register status flags
#else
#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID, _LABEL, _FLAGS) do { } while (0)
#endif
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index dd1c2eb..2edc5d3 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -282,7 +282,7 @@
void ImGui::TextWrappedV(const char* fmt, va_list args)
{
- bool need_backup = (GImGui->CurrentWindow->DC.TextWrapPos < 0.0f); // Keep existing wrap position if one is already set
+ bool need_backup = (GImGui->CurrentWindow->DC.TextWrapPos < 0.0f); // Keep existing wrap position if one is already set
if (need_backup)
PushTextWrapPos(0.0f);
TextV(fmt, args);
@@ -399,8 +399,8 @@
g.HoveredWindow = window;
#ifdef IMGUI_ENABLE_TEST_ENGINE
- if (window->DC.LastItemId != id)
- ImGuiTestEngineHook_ItemAdd(bb, id);
+ if (id != 0 && window->DC.LastItemId != id)
+ ImGuiTestEngineHook_ItemAdd(&g, bb, id);
#endif
bool pressed = false;