mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Overlap: IsItemHovered: Changed behavior to return false when querying an item using AllowOverlap mode. Added ImGuiHoveredFlags_AllowWhenOverlappedByItem, ImGuiHoveredFlags_AllowWhenOverlappedByWindow., (#6512, #3909, #517)
This commit is contained in:
		
							
								
								
									
										14
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -399,6 +399,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: 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/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/22 (1.89.6) - listbox: commented out obsolete/redirecting functions that were marked obsolete more than two years ago: | ||||
| @@ -3983,12 +3984,13 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) | ||||
|         // to use IsItemHovered() after EndChild() itself. Until a solution is found I believe reverting to the test from 2017/09/27 is safe since this was | ||||
|         // the test that has been running for a long while. | ||||
|         if (g.HoveredWindow != window && (status_flags & ImGuiItemStatusFlags_HoveredWindow) == 0) | ||||
|             if ((flags & ImGuiHoveredFlags_AllowWhenOverlapped) == 0) | ||||
|             if ((flags & ImGuiHoveredFlags_AllowWhenOverlappedByWindow) == 0) | ||||
|                 return false; | ||||
|  | ||||
|         // Test if another item is active (e.g. being dragged) | ||||
|         const ImGuiID id = g.LastItemData.ID; | ||||
|         if ((flags & ImGuiHoveredFlags_AllowWhenBlockedByActiveItem) == 0) | ||||
|             if (g.ActiveId != 0 && g.ActiveId != g.LastItemData.ID && !g.ActiveIdAllowOverlap && g.ActiveId != window->MoveId) | ||||
|             if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap && g.ActiveId != window->MoveId) | ||||
|                 return false; | ||||
|  | ||||
|         // Test if interactions on this window are blocked by an active popup or modal. | ||||
| @@ -4002,8 +4004,14 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) | ||||
|  | ||||
|         // Special handling for calling after Begin() which represent the title bar or tab. | ||||
|         // When the window is skipped/collapsed (SkipItems==true) that last item will never be overwritten so we need to detect the case. | ||||
|         if (g.LastItemData.ID == window->MoveId && window->WriteAccessed) | ||||
|         if (id == window->MoveId && window->WriteAccessed) | ||||
|             return false; | ||||
|  | ||||
|         // Test if using AllowOverlap and overlapped | ||||
|         if ((g.LastItemData.InFlags & ImGuiItemflags_AllowOverlap) && id != 0) | ||||
|             if ((flags & ImGuiHoveredFlags_AllowWhenOverlappedByItem) == 0) | ||||
|                 if (g.HoveredIdPreviousFrame != g.LastItemData.ID) | ||||
|                     return false; | ||||
|     } | ||||
|  | ||||
|     // Handle hover delay | ||||
|   | ||||
		Reference in New Issue
	
	Block a user