Internals: Fixed HoveredIdTimer so it is safe to call SetHoveredId() multiple times without altering the timer.
diff --git a/imgui.cpp b/imgui.cpp
index 10f01ba..41cd5be 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -2285,7 +2285,8 @@
ImGuiContext& g = *GImGui;
g.HoveredId = id;
g.HoveredIdAllowOverlap = false;
- g.HoveredIdTimer = (id != 0 && g.HoveredIdPreviousFrame == id) ? (g.HoveredIdTimer + g.IO.DeltaTime) : 0.0f;
+ if (id != 0 && g.HoveredIdPreviousFrame != id)
+ g.HoveredIdTimer = 0.0f;
}
ImGuiID ImGui::GetHoveredID()
@@ -3897,6 +3898,8 @@
// Clear reference to active widget if the widget isn't alive anymore
if (!g.HoveredIdPreviousFrame)
g.HoveredIdTimer = 0.0f;
+ if (g.HoveredId)
+ g.HoveredIdTimer += g.IO.DeltaTime;
g.HoveredIdPreviousFrame = g.HoveredId;
g.HoveredId = 0;
g.HoveredIdAllowOverlap = false;