|
|
|
@ -3782,45 +3782,6 @@ ImGuiWindow::~ImGuiWindow() |
|
|
|
|
ColumnsStorage.clear_destruct(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ImGuiID ImGuiWindow::GetID(const char* str, const char* str_end) |
|
|
|
|
{ |
|
|
|
|
ImGuiID seed = IDStack.back(); |
|
|
|
|
ImGuiID id = ImHashStr(str, str_end ? (str_end - str) : 0, seed); |
|
|
|
|
ImGuiContext& g = *Ctx; |
|
|
|
|
if (g.DebugHookIdInfo == id) |
|
|
|
|
ImGui::DebugHookIdInfo(id, ImGuiDataType_String, str, str_end); |
|
|
|
|
return id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ImGuiID ImGuiWindow::GetID(const void* ptr) |
|
|
|
|
{ |
|
|
|
|
ImGuiID seed = IDStack.back(); |
|
|
|
|
ImGuiID id = ImHashData(&ptr, sizeof(void*), seed); |
|
|
|
|
ImGuiContext& g = *Ctx; |
|
|
|
|
if (g.DebugHookIdInfo == id) |
|
|
|
|
ImGui::DebugHookIdInfo(id, ImGuiDataType_Pointer, ptr, NULL); |
|
|
|
|
return id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ImGuiID ImGuiWindow::GetID(int n) |
|
|
|
|
{ |
|
|
|
|
ImGuiID seed = IDStack.back(); |
|
|
|
|
ImGuiID id = ImHashData(&n, sizeof(n), seed); |
|
|
|
|
ImGuiContext& g = *Ctx; |
|
|
|
|
if (g.DebugHookIdInfo == id) |
|
|
|
|
ImGui::DebugHookIdInfo(id, ImGuiDataType_S32, (void*)(intptr_t)n, NULL); |
|
|
|
|
return id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// This is only used in rare/specific situations to manufacture an ID out of nowhere.
|
|
|
|
|
ImGuiID ImGuiWindow::GetIDFromRectangle(const ImRect& r_abs) |
|
|
|
|
{ |
|
|
|
|
ImGuiID seed = IDStack.back(); |
|
|
|
|
ImRect r_rel = ImGui::WindowRectAbsToRel(this, r_abs); |
|
|
|
|
ImGuiID id = ImHashData(&r_rel, sizeof(r_rel), seed); |
|
|
|
|
return id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void SetCurrentWindow(ImGuiWindow* window) |
|
|
|
|
{ |
|
|
|
|
ImGuiContext& g = *GImGui; |
|
|
|
@ -8000,6 +7961,47 @@ bool ImGui::IsRectVisible(const ImVec2& rect_min, const ImVec2& rect_max) |
|
|
|
|
// [SECTION] ID STACK
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
// This is one of the very rare legacy case where we use ImGuiWindow methods,
|
|
|
|
|
// it should ideally be flattened at some point but it's been used a lots by widgets.
|
|
|
|
|
ImGuiID ImGuiWindow::GetID(const char* str, const char* str_end) |
|
|
|
|
{ |
|
|
|
|
ImGuiID seed = IDStack.back(); |
|
|
|
|
ImGuiID id = ImHashStr(str, str_end ? (str_end - str) : 0, seed); |
|
|
|
|
ImGuiContext& g = *Ctx; |
|
|
|
|
if (g.DebugHookIdInfo == id) |
|
|
|
|
ImGui::DebugHookIdInfo(id, ImGuiDataType_String, str, str_end); |
|
|
|
|
return id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ImGuiID ImGuiWindow::GetID(const void* ptr) |
|
|
|
|
{ |
|
|
|
|
ImGuiID seed = IDStack.back(); |
|
|
|
|
ImGuiID id = ImHashData(&ptr, sizeof(void*), seed); |
|
|
|
|
ImGuiContext& g = *Ctx; |
|
|
|
|
if (g.DebugHookIdInfo == id) |
|
|
|
|
ImGui::DebugHookIdInfo(id, ImGuiDataType_Pointer, ptr, NULL); |
|
|
|
|
return id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ImGuiID ImGuiWindow::GetID(int n) |
|
|
|
|
{ |
|
|
|
|
ImGuiID seed = IDStack.back(); |
|
|
|
|
ImGuiID id = ImHashData(&n, sizeof(n), seed); |
|
|
|
|
ImGuiContext& g = *Ctx; |
|
|
|
|
if (g.DebugHookIdInfo == id) |
|
|
|
|
ImGui::DebugHookIdInfo(id, ImGuiDataType_S32, (void*)(intptr_t)n, NULL); |
|
|
|
|
return id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// This is only used in rare/specific situations to manufacture an ID out of nowhere.
|
|
|
|
|
ImGuiID ImGuiWindow::GetIDFromRectangle(const ImRect& r_abs) |
|
|
|
|
{ |
|
|
|
|
ImGuiID seed = IDStack.back(); |
|
|
|
|
ImRect r_rel = ImGui::WindowRectAbsToRel(this, r_abs); |
|
|
|
|
ImGuiID id = ImHashData(&r_rel, sizeof(r_rel), seed); |
|
|
|
|
return id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ImGui::PushID(const char* str_id) |
|
|
|
|
{ |
|
|
|
|
ImGuiContext& g = *GImGui; |
|
|
|
|