From b33977bc15d7edeccbbd6a05dd7a5099c835f33f Mon Sep 17 00:00:00 2001 From: omar Date: Mon, 7 Jan 2019 23:59:05 +0100 Subject: [PATCH] Tests: Reworking hook prototypes for imgui-test to be faster and multi-context friendly. --- imgui.cpp | 7 ++++--- imgui_internal.h | 10 +++++----- imgui_widgets.cpp | 6 +++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index 3f9ce8be..bcd4daf7 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -2697,7 +2697,8 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg) 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 @@ void ImGui::NewFrame() ImGuiContext& g = *GImGui; #ifdef IMGUI_ENABLE_TEST_ENGINE - ImGuiTestEngineHook_PreNewFrame(); + ImGuiTestEngineHook_PreNewFrame(&g); #endif // Check user data @@ -3427,7 +3428,7 @@ void ImGui::NewFrame() 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 7429c34c..97520ce3 100644 --- a/imgui_internal.h +++ b/imgui_internal.h @@ -1429,11 +1429,11 @@ IMGUI_API void ImFontAtlasBuildMultiplyRectAlpha8(const unsigned ch // 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 dd1c2eb4..2edc5d3c 100644 --- a/imgui_widgets.cpp +++ b/imgui_widgets.cpp @@ -282,7 +282,7 @@ void ImGui::TextWrapped(const char* fmt, ...) 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 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool 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;