diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index aa0b1db9e..cd78ff878 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -49,6 +49,12 @@ Breaking Changes: Other Changes: +- Fixed an inconsistency between IsItemHovered() and internal hovering check, + where IsItemHovered() would return true to mouse was first clicked on the + background of a non-moveable window then moved over the item or button. + Note that while it is consistent with other logic, there is a possibility + that some third-party code may accidentally relied on this. + (#8877) [@achabense, @ocornut] - Fonts: fixed an issue when a font using MergeMode has a reference size specified but the target font doesn't. Usually either all fonts should have a reference size (only required when specifying e.g. GlyphOffset), diff --git a/imgui.cpp b/imgui.cpp index c67340edd..cef058b45 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -4656,7 +4656,6 @@ static ImGuiHoveredFlags ApplyHoverFlagsForTooltip(ImGuiHoveredFlags user_flags, } // This is roughly matching the behavior of internal-facing ItemHoverable() -// - we allow hovering to be true when ActiveId==window->MoveID, so that clicking on non-interactive items such as a Text() item still returns true with IsItemHovered() // - this should work even for non-interactive items that have no ID, so we cannot use LastItemId bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) { @@ -4698,8 +4697,7 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) const ImGuiID id = g.LastItemData.ID; if ((flags & ImGuiHoveredFlags_AllowWhenBlockedByActiveItem) == 0) if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap) - if (g.ActiveId != window->MoveId) - return false; + return false; // Test if interactions on this window are blocked by an active popup or modal. // The ImGuiHoveredFlags_AllowWhenBlockedByPopup flag will be tested here. diff --git a/imgui.h b/imgui.h index 3112184fc..95a8001d5 100644 --- a/imgui.h +++ b/imgui.h @@ -29,7 +29,7 @@ // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') #define IMGUI_VERSION "1.92.2 WIP" -#define IMGUI_VERSION_NUM 19214 +#define IMGUI_VERSION_NUM 19215 #define IMGUI_HAS_TABLE // Added BeginTable() - from IMGUI_VERSION_NUM >= 18000 #define IMGUI_HAS_TEXTURES // Added ImGuiBackendFlags_RendererHasTextures - from IMGUI_VERSION_NUM >= 19198