// This gives a little bit of leeway before clearing the hover timer, allowing mouse to cross gaps
// We could expose 0.25f as io.HoverClearDelay but I am not sure of the logic yet, this is particularly subtle.
g.HoverDelayClearTimer+=g.IO.DeltaTime;
if(g.HoverDelayClearTimer>=ImMax(0.25f,g.IO.DeltaTime*2.0f))// ~7 frames at 30 Hz + allow for low framerate
g.HoverDelayTimer=g.HoverDelayClearTimer=0.0f;// May want a decaying timer, in which case need to clamp at max first, based on max of caller last requested timer.
g.HoverItemDelayClearTimer+=g.IO.DeltaTime;
if(g.HoverItemDelayClearTimer>=ImMax(0.25f,g.IO.DeltaTime*2.0f))// ~7 frames at 30 Hz + allow for low framerate
g.HoverItemDelayTimer=g.HoverItemDelayClearTimer=0.0f;// May want a decaying timer, in which case need to clamp at max first, based on max of caller last requested timer.
Text("HoveredId: 0x%08X (%.2f sec), AllowOverlap: %d",g.HoveredIdPreviousFrame,g.HoveredIdTimer,g.HoveredIdAllowOverlap);// Not displaying g.HoveredId as it is update mid-frame
ImGuiHoveredFlags_DelayNormal=1<<11,// Return true after io.HoverDelayNormal elapsed (~0.35 sec)
ImGuiHoveredFlags_DelayShort=1<<12,// Return true after io.HoverDelayShort elapsed (~0.10 sec)
ImGuiHoveredFlags_NoSharedDelay=1<<13,// Disable shared delay system where moving from one item to the next keeps the previous timer for a short time (standard for tooltips with long delays)
ImGuiHoveredFlags_DelayNormal=1<<11,// IsItemHovered() only: Return true after io.HoverDelayNormal elapsed (~0.35 sec)
ImGuiHoveredFlags_DelayShort=1<<12,// IsItemHovered() only: Return true after io.HoverDelayShort elapsed (~0.10 sec)
ImGuiHoveredFlags_NoSharedDelay=1<<13,// IsItemHovered() only: Disable shared delay system where moving from one item to the next keeps the previous timer for a short time (standard for tooltips with long delays)
};
// Flags for ImGui::BeginDragDropSource(), ImGui::AcceptDragDropPayload()