|
|
|
@ -4031,17 +4031,17 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) |
|
|
|
|
bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id) |
|
|
|
|
{ |
|
|
|
|
ImGuiContext& g = *GImGui; |
|
|
|
|
if (g.HoveredId != 0 && g.HoveredId != id && !g.HoveredIdAllowOverlap) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
ImGuiWindow* window = g.CurrentWindow; |
|
|
|
|
if (g.HoveredWindow != window) |
|
|
|
|
return false; |
|
|
|
|
if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap) |
|
|
|
|
return false; |
|
|
|
|
if (!IsMouseHoveringRect(bb.Min, bb.Max)) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
if (g.HoveredId != 0 && g.HoveredId != id && !g.HoveredIdAllowOverlap) |
|
|
|
|
return false; |
|
|
|
|
if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
// Done with rectangle culling so we can perform heavier checks now.
|
|
|
|
|
ImGuiItemFlags item_flags = (g.LastItemData.ID == id ? g.LastItemData.InFlags : g.CurrentItemFlags); |
|
|
|
|
if (!(item_flags & ImGuiItemFlags_NoWindowHoverableCheck) && !IsWindowContentHoverable(window, ImGuiHoveredFlags_None)) |
|
|
|
|