@ -2861,16 +2861,6 @@ void ImGui::SetHoveredID(ImGuiID id) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . HoveredIdAllowOverlap  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( id  ! =  0  & &  g . HoveredIdPreviousFrame  ! =  id )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        g . HoveredIdTimer  =  g . HoveredIdNotActiveTimer  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // [DEBUG] Item Picker tool!
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // We perform the check here because SetHoveredID() is not frequently called (1~ time a frame), making
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // the cost of this tool near-zero. We would get slightly better call-stack if we made the test in ItemAdd()
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // but that would incur a slightly higher cost and may require us to hide this feature behind a define.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( id  ! =  0  & &  id  = =  g . DebugBreakItemId )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        IM_DEBUG_BREAK ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        g . DebugBreakItemId  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					ImGuiID  ImGui : : GetHoveredID ( )  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -2979,6 +2969,15 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( g . NavWindow - > RootWindowForNav  = =  window - > RootWindowForNav )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( window  = =  g . NavWindow  | |  ( ( window - > Flags  |  g . NavWindow - > Flags )  &  ImGuiWindowFlags_NavFlattened ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    NavProcessItem ( window ,  nav_bb_arg  ?  * nav_bb_arg  :  bb ,  id ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // [DEBUG] Item Picker tool, when enabling the "extended" version we perform the check in ItemAdd()
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# ifdef IMGUI_DEBUG_TOOL_ITEM_PICKER_EX  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( id  = =  g . DebugItemPickerBreakID )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            IM_DEBUG_BREAK ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . DebugItemPickerBreakID  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemId  =  id ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3067,6 +3066,17 @@ bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    SetHoveredID ( id ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // [DEBUG] Item Picker tool!
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // We perform the check here because SetHoveredID() is not frequently called (1~ time a frame), making
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // the cost of this tool near-zero. We can get slightly better call-stack and support picking non-hovered
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // items if we perform the test in ItemAdd(), but that would incur a small runtime cost.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // #define IMGUI_DEBUG_TOOL_ITEM_PICKER_EX in imconfig.h if you want this check to also be performed in ItemAdd().
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( g . DebugItemPickerActive  & &  g . HoveredIdPreviousFrame  = =  id )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        GetForegroundDrawList ( ) - > AddRect ( bb . Min ,  bb . Max ,  IM_COL32 ( 255 ,  255 ,  0 ,  255 ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( g . DebugItemPickerBreakID  = =  id )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        IM_DEBUG_BREAK ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3787,6 +3797,27 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . BeginPopupStack . resize ( 0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ClosePopupsOverWindow ( g . NavWindow ,  false ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // [DEBUG] Item picker tool - start with DebugStartItemPicker() - useful to visually select an item and break into its call-stack.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . DebugItemPickerBreakID  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( g . DebugItemPickerActive )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        const  ImGuiID  hovered_id  =  g . HoveredIdPreviousFrame ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SetMouseCursor ( ImGuiMouseCursor_Hand ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ImGui : : IsKeyPressedMap ( ImGuiKey_Escape ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . DebugItemPickerActive  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ImGui : : IsMouseClicked ( 0 )  & &  hovered_id )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . DebugItemPickerBreakID  =  hovered_id ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . DebugItemPickerActive  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SetNextWindowBgAlpha ( 0.60f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : BeginTooltip ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Text ( " HoveredId: 0x%08X " ,  hovered_id ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Text ( " Press ESC to abort picking. " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : TextColored ( GetStyleColorVec4 ( hovered_id  ?  ImGuiCol_Text  :  ImGuiCol_TextDisabled ) ,  " Click to break in debugger! " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : EndTooltip ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Create implicit/fallback window - which we will only render it if the user has added something to it.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // We don't use "Debug" to avoid colliding with user trying to create a "Debug" window with custom flags.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // This fallback is particularly important as it avoid ImGui:: calls from crashing.
   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -9801,27 +9832,9 @@ void ImGui::ShowMetricsWindow(bool* p_open) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ImGui : : TreeNode ( " Tools " ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        static  bool  picking_enabled  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // The Item Picker tool is super useful to visually select an item and break into the call-stack of where it was submitted.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ImGui : : Button ( " Item Picker.. " ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            picking_enabled  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( picking_enabled )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            const  ImGuiID  hovered_id  =  g . HoveredIdPreviousFrame ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGui : : SetMouseCursor ( ImGuiMouseCursor_Hand ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ImGui : : IsKeyPressedMap ( ImGuiKey_Escape ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                picking_enabled  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ImGui : : IsMouseClicked ( 0 )  & &  hovered_id )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                g . DebugBreakItemId  =  hovered_id ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                picking_enabled  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGui : : SetNextWindowBgAlpha ( 0.5f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGui : : BeginTooltip ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGui : : Text ( " HoveredId: 0x%08X " ,  hovered_id ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGui : : Text ( " Press ESC to abort picking. " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGui : : TextColored ( GetStyleColorVec4 ( hovered_id  ?  ImGuiCol_Text  :  ImGuiCol_TextDisabled ) ,  " Click to break in debugger! " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGui : : EndTooltip ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGui : : DebugStartItemPicker ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Checkbox ( " Show windows begin order " ,  & show_windows_begin_order ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Checkbox ( " Show windows rectangles " ,  & show_windows_rects ) ;