mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 05:01:05 +01:00 
			
		
		
		
	Overlap, IsItemHovered: clarification on using IsItemHovered() on a non-reactive item after a reactive overlappable one. (#6610)
This commit is contained in:
		| @@ -45,7 +45,7 @@ Breaking changes: | |||||||
| - IO: Obsoleted io.ClearInputCharacters() (added in 1.47) as it now ambiguous | - IO: Obsoleted io.ClearInputCharacters() (added in 1.47) as it now ambiguous | ||||||
|   and often incorrect/misleading considering the existence of a higher-level |   and often incorrect/misleading considering the existence of a higher-level | ||||||
|   input queue. (#4921) |   input queue. (#4921) | ||||||
| - ImDrawData: CmdLists[] arra is now owned, changed from 'ImDrawList**' to | - ImDrawData: CmdLists[] array is now owned, changed from 'ImDrawList**' to | ||||||
|   'ImVector<ImDrawList*>'. Majority of users shouldn't be affected, but you |   'ImVector<ImDrawList*>'. Majority of users shouldn't be affected, but you | ||||||
|   cannot compare to NULL nor reassign manually anymore. |   cannot compare to NULL nor reassign manually anymore. | ||||||
|   Instead use AddDrawList(). (#6406, #4879, #1878) |   Instead use AddDrawList(). (#6406, #4879, #1878) | ||||||
| @@ -98,6 +98,11 @@ Breaking changes: | |||||||
|     legacy 'SetItemAllowOverlap()' call (public API) + ImGuiButtonFlags_AllowOverlap (internal). |     legacy 'SetItemAllowOverlap()' call (public API) + ImGuiButtonFlags_AllowOverlap (internal). | ||||||
|   - Obsoleted 'SetItemAllowOverlap()': it didn't and couldn't work reliably since 1.89 (2022-11-15), |   - Obsoleted 'SetItemAllowOverlap()': it didn't and couldn't work reliably since 1.89 (2022-11-15), | ||||||
|     and relied on ambiguously defined design. Use 'SetNextItemAllowOverlap()' before item instead. |     and relied on ambiguously defined design. Use 'SetNextItemAllowOverlap()' before item instead. | ||||||
|  |   - Selectable, TreeNode: When using ImGuiSelectableFlags_AllowOverlap/ImGuiTreeNodeFlags_AllowOverlap | ||||||
|  |     and holding item held, overlapping widgets won't appear as hovered. (#6512, #3909) | ||||||
|  |     While this fixes a common small visual issue, it also means that calling IsItemHovered() | ||||||
|  |     after a non-reactive elements - e.g. Text() - overlapping an active one may fail if you don't | ||||||
|  |     use IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem). (#6610) | ||||||
|   - Renamed 'ImGuiTreeNodeFlags_AllowItemOverlap' to 'ImGuiTreeNodeFlags_AllowOverlap'. |   - Renamed 'ImGuiTreeNodeFlags_AllowItemOverlap' to 'ImGuiTreeNodeFlags_AllowOverlap'. | ||||||
|   - Renamed 'ImGuiSelectableFlags_AllowItemOverlap' to 'ImGuiSelectableFlags_AllowOverlap' |   - Renamed 'ImGuiSelectableFlags_AllowItemOverlap' to 'ImGuiSelectableFlags_AllowOverlap' | ||||||
|   - Kept redirecting enums (will obsolete). |   - Kept redirecting enums (will obsolete). | ||||||
| @@ -133,8 +138,6 @@ Other changes: | |||||||
|   - Fixed first frame of an overlap highlighting underlying item if previous frame didn't hover anything. |   - Fixed first frame of an overlap highlighting underlying item if previous frame didn't hover anything. | ||||||
|   - IsItemHovered: Changed to return false when querying an item using AllowOverlap mode which |   - IsItemHovered: Changed to return false when querying an item using AllowOverlap mode which | ||||||
|     is being overlapped. Added ImGuiHoveredFlags_AllowWhenOverlappedByItem to opt-out. (#6512, #3909, #517) |     is being overlapped. Added ImGuiHoveredFlags_AllowWhenOverlappedByItem to opt-out. (#6512, #3909, #517) | ||||||
|   - Selectable, TreeNode: When using ImGuiSelectableFlags_AllowOverlap/ImGuiTreeNodeFlags_AllowOverlap |  | ||||||
|     and holding item held, overlapping widgets won't appear as hovered. (#6512, #3909) |  | ||||||
| - IsWindowHovered: Added support for ImGuiHoveredFlags_Stationary. | - IsWindowHovered: Added support for ImGuiHoveredFlags_Stationary. | ||||||
| - IsWindowHovered, IsItemHovered: Assert when passed any unsupported flags. | - IsWindowHovered, IsItemHovered: Assert when passed any unsupported flags. | ||||||
| - Tables: Fixed a regression in 1.89.6 leading to the first column of tables with either | - Tables: Fixed a regression in 1.89.6 leading to the first column of tables with either | ||||||
|   | |||||||
| @@ -429,6 +429,7 @@ CODE | |||||||
|  - 2023/06/28 (1.89.7) - overlapping items: obsoleted 'SetItemAllowOverlap()' (called after item) in favor of calling 'SetNextItemAllowOverlap()' (called before item). 'SetItemAllowOverlap()' didn't and couldn't work reliably since 1.89 (2022-11-15). |  - 2023/06/28 (1.89.7) - overlapping items: obsoleted 'SetItemAllowOverlap()' (called after item) in favor of calling 'SetNextItemAllowOverlap()' (called before item). 'SetItemAllowOverlap()' didn't and couldn't work reliably since 1.89 (2022-11-15). | ||||||
|  - 2023/06/28 (1.89.7) - overlapping items: renamed 'ImGuiTreeNodeFlags_AllowItemOverlap' to 'ImGuiTreeNodeFlags_AllowOverlap', 'ImGuiSelectableFlags_AllowItemOverlap' to 'ImGuiSelectableFlags_AllowOverlap'. Kept redirecting enums (will obsolete). |  - 2023/06/28 (1.89.7) - overlapping items: renamed 'ImGuiTreeNodeFlags_AllowItemOverlap' to 'ImGuiTreeNodeFlags_AllowOverlap', 'ImGuiSelectableFlags_AllowItemOverlap' to 'ImGuiSelectableFlags_AllowOverlap'. Kept redirecting enums (will obsolete). | ||||||
|  - 2023/06/28 (1.89.7) - overlapping items: IsItemHovered() now by default return false when querying an item using AllowOverlap mode which is being overlapped. Use ImGuiHoveredFlags_AllowWhenOverlappedByItem to revert to old behavior. |  - 2023/06/28 (1.89.7) - overlapping items: IsItemHovered() now by default return false when querying an item using AllowOverlap mode which is being overlapped. Use ImGuiHoveredFlags_AllowWhenOverlappedByItem to revert to old behavior. | ||||||
|  |  - 2023/06/28 (1.89.7) - overlapping items: Selectable and TreeNode don't allow overlap when active so overlapping widgets won't appear as hovered. While this fixes a common small visual issue, it also means that calling IsItemHovered() after a non-reactive elements - e.g. Text() - overlapping an active one may fail if you don't use IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem). (#6610) | ||||||
|  - 2023/06/20 (1.89.7) - moved io.HoverDelayShort/io.HoverDelayNormal to style.HoverDelayShort/style.HoverDelayNormal. As the fields were added in 1.89 and expected to be left unchanged by most users, or only tweaked once during app initialization, we are exceptionally accepting the breakage. |  - 2023/06/20 (1.89.7) - moved io.HoverDelayShort/io.HoverDelayNormal to style.HoverDelayShort/style.HoverDelayNormal. As the fields were added in 1.89 and expected to be left unchanged by most users, or only tweaked once during app initialization, we are exceptionally accepting the breakage. | ||||||
|  - 2023/05/30 (1.89.6) - backends: renamed "imgui_impl_sdlrenderer.cpp" to "imgui_impl_sdlrenderer2.cpp" and "imgui_impl_sdlrenderer.h" to "imgui_impl_sdlrenderer2.h". This is in prevision for the future release of SDL3. |  - 2023/05/30 (1.89.6) - backends: renamed "imgui_impl_sdlrenderer.cpp" to "imgui_impl_sdlrenderer2.cpp" and "imgui_impl_sdlrenderer.h" to "imgui_impl_sdlrenderer2.h". This is in prevision for the future release of SDL3. | ||||||
|  - 2023/05/22 (1.89.6) - listbox: commented out obsolete/redirecting functions that were marked obsolete more than two years ago: |  - 2023/05/22 (1.89.6) - listbox: commented out obsolete/redirecting functions that were marked obsolete more than two years ago: | ||||||
| @@ -4077,7 +4078,7 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) | |||||||
| // Internal facing ItemHoverable() used when submitting widgets. Differs slightly from IsItemHovered(). | // Internal facing ItemHoverable() used when submitting widgets. Differs slightly from IsItemHovered(). | ||||||
| // (this does not rely on LastItemData it can be called from a ButtonBehavior() call not following an ItemAdd() call) | // (this does not rely on LastItemData it can be called from a ButtonBehavior() call not following an ItemAdd() call) | ||||||
| // FIXME-LEGACY: the 'ImGuiItemFlags item_flags' parameter was added on 2023-06-28. | // FIXME-LEGACY: the 'ImGuiItemFlags item_flags' parameter was added on 2023-06-28. | ||||||
| // If you used this ii your legacy/custom widgets code: | // If you used this in your legacy/custom widgets code: | ||||||
| // - Commonly: if your ItemHoverable() call comes after an ItemAdd() call: pass 'item_flags = g.LastItemData.InFlags'. | // - Commonly: if your ItemHoverable() call comes after an ItemAdd() call: pass 'item_flags = g.LastItemData.InFlags'. | ||||||
| // - Rare: otherwise you may pass 'item_flags = 0' (ImGuiItemFlags_None) unless you want to benefit from special behavior handled by ItemHoverable. | // - Rare: otherwise you may pass 'item_flags = 0' (ImGuiItemFlags_None) unless you want to benefit from special behavior handled by ItemHoverable. | ||||||
| bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id, ImGuiItemFlags item_flags) | bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id, ImGuiItemFlags item_flags) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user