@ -755,7 +755,8 @@ static void             NavUpdate(); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void              NavUpdateWindowing ( ) ;  
					 
					 
					 
					static  void              NavUpdateWindowing ( ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void              NavProcessItem ( ImGuiWindow *  window ,  const  ImRect &  nav_bb ,  const  ImGuiID  id ) ;  
					 
					 
					 
					static  void              NavProcessItem ( ImGuiWindow *  window ,  const  ImRect &  nav_bb ,  const  ImGuiID  id ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void              UpdateMovingWindow ( ) ;  
					 
					 
					 
					static  void              NewFrameUpdateMovingWindow ( ) ;  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					static  void              NewFrameUpdateMouseInputs ( ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void              UpdateManualResize ( ImGuiWindow *  window ,  const  ImVec2 &  size_auto_fit ,  int *  border_held ,  int  resize_grip_count ,  ImU32  resize_grip_col [ 4 ] ) ;  
					 
					 
					 
					static  void              UpdateManualResize ( ImGuiWindow *  window ,  const  ImVec2 &  size_auto_fit ,  int *  border_held ,  int  resize_grip_count ,  ImU32  resize_grip_col [ 4 ] ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void              FocusFrontMostActiveWindow ( ImGuiWindow *  ignore_window ) ;  
					 
					 
					 
					static  void              FocusFrontMostActiveWindow ( ImGuiWindow *  ignore_window ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3249,7 +3250,7 @@ static void ImGui::NavUpdate() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  ImGui : : UpdateMovingWindow ( )  
					 
					 
					 
					static  void  ImGui : : NewFrame UpdateMovingWindow( )  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiContext &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiContext &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( g . MovingWindow  & &  g . MovingWindow - > MoveId  = =  g . ActiveId  & &  g . ActiveIdSource  = =  ImGuiInputSource_Mouse )   
					 
					 
					 
					    if  ( g . MovingWindow  & &  g . MovingWindow - > MoveId  = =  g . ActiveId  & &  g . ActiveIdSource  = =  ImGuiInputSource_Mouse )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3288,6 +3289,59 @@ static void ImGui::UpdateMovingWindow() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					static  void  ImGui : : NewFrameUpdateMouseInputs ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImGuiContext &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  ( g . IO . ConfigFlags  &  ImGuiConfigFlags_NoMouse )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . IO . MousePos  =  ImVec2 ( - FLT_MAX ,  - FLT_MAX ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        memset ( g . IO . MouseDown ,  0 ,  sizeof ( g . IO . MouseDown ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // If mouse just appeared or disappeared (usually denoted by -FLT_MAX component, but in reality we test for -256000.0f) we cancel out movement in MouseDelta
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  ( ImGui : : IsMousePosValid ( & g . IO . MousePos )  & &  ImGui : : IsMousePosValid ( & g . IO . MousePosPrev ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . IO . MouseDelta  =  g . IO . MousePos  -  g . IO . MousePosPrev ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    else   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . IO . MouseDelta  =  ImVec2 ( 0.0f ,  0.0f ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  ( g . IO . MouseDelta . x  ! =  0.0f  | |  g . IO . MouseDelta . y  ! =  0.0f )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . NavDisableMouseHover  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    g . IO . MousePosPrev  =  g . IO . MousePos ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( g . IO . MouseDown ) ;  i + + )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . IO . MouseClicked [ i ]  =  g . IO . MouseDown [ i ]  & &  g . IO . MouseDownDuration [ i ]  <  0.0f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . IO . MouseReleased [ i ]  =  ! g . IO . MouseDown [ i ]  & &  g . IO . MouseDownDuration [ i ]  > =  0.0f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . IO . MouseDownDurationPrev [ i ]  =  g . IO . MouseDownDuration [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . IO . MouseDownDuration [ i ]  =  g . IO . MouseDown [ i ]  ?  ( g . IO . MouseDownDuration [ i ]  <  0.0f  ?  0.0f  :  g . IO . MouseDownDuration [ i ]  +  g . IO . DeltaTime )  :  - 1.0f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . IO . MouseDoubleClicked [ i ]  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        if  ( g . IO . MouseClicked [ i ] )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            if  ( g . Time  -  g . IO . MouseClickedTime [ i ]  <  g . IO . MouseDoubleClickTime )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                if  ( ImLengthSqr ( g . IO . MousePos  -  g . IO . MouseClickedPos [ i ] )  <  g . IO . MouseDoubleClickMaxDist  *  g . IO . MouseDoubleClickMaxDist )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    g . IO . MouseDoubleClicked [ i ]  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                g . IO . MouseClickedTime [ i ]  =  - FLT_MAX ;     // so the third click isn't turned into a double-click
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            else   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                g . IO . MouseClickedTime [ i ]  =  g . Time ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            g . IO . MouseClickedPos [ i ]  =  g . IO . MousePos ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            g . IO . MouseDragMaxDistanceAbs [ i ]  =  ImVec2 ( 0.0f ,  0.0f ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            g . IO . MouseDragMaxDistanceSqr [ i ]  =  0.0f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        else  if  ( g . IO . MouseDown [ i ] )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ImVec2  mouse_delta  =  g . IO . MousePos  -  g . IO . MouseClickedPos [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            g . IO . MouseDragMaxDistanceAbs [ i ] . x  =  ImMax ( g . IO . MouseDragMaxDistanceAbs [ i ] . x ,  mouse_delta . x  <  0.0f  ?  - mouse_delta . x  :  mouse_delta . x ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            g . IO . MouseDragMaxDistanceAbs [ i ] . y  =  ImMax ( g . IO . MouseDragMaxDistanceAbs [ i ] . y ,  mouse_delta . y  <  0.0f  ?  - mouse_delta . y  :  mouse_delta . y ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            g . IO . MouseDragMaxDistanceSqr [ i ]  =  ImMax ( g . IO . MouseDragMaxDistanceSqr [ i ] ,  ImLengthSqr ( mouse_delta ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        if  ( g . IO . MouseClicked [ i ] )  // Clicking any mouse button reactivate mouse hovering which may have been deactivated by gamepad/keyboard navigation
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            g . NavDisableMouseHover  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void  ImGui : : NewFrame ( )  
					 
					 
					 
					void  ImGui : : NewFrame ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( GImGui  ! =  NULL  & &  " No current context. Did you call ImGui::CreateContext() or ImGui::SetCurrentContext()? " ) ;   
					 
					 
					 
					    IM_ASSERT ( GImGui  ! =  NULL  & &  " No current context. Did you call ImGui::CreateContext() or ImGui::SetCurrentContext()? " ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3318,6 +3372,14 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . SettingsLoaded  =  true ;   
					 
					 
					 
					        g . SettingsLoaded  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // Save settings (with a delay so we don't spam disk too much)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  ( g . SettingsDirtyTimer  >  0.0f )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        g . SettingsDirtyTimer  - =  g . IO . DeltaTime ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        if  ( g . SettingsDirtyTimer  < =  0.0f )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            SaveIniSettingsToDisk ( g . IO . IniFilename ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . Time  + =  g . IO . DeltaTime ;   
					 
					 
					 
					    g . Time  + =  g . IO . DeltaTime ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . FrameCount  + =  1 ;   
					 
					 
					 
					    g . FrameCount  + =  1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . TooltipOverrideCount  =  0 ;   
					 
					 
					 
					    g . TooltipOverrideCount  =  0 ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3372,53 +3434,7 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    NavUpdate ( ) ;   
					 
					 
					 
					    NavUpdate ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Update mouse input state
   
					 
					 
					 
					    // Update mouse input state
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // If mouse just appeared or disappeared (usually denoted by -FLT_MAX component, but in reality we test for -256000.0f) we cancel out movement in MouseDelta
   
					 
					 
					 
					    NewFrameUpdateMouseInputs ( ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( g . IO . ConfigFlags  &  ImGuiConfigFlags_NoMouse )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MousePos  =  ImVec2 ( - FLT_MAX ,  - FLT_MAX ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        memset ( g . IO . MouseDown ,  0 ,  sizeof ( g . IO . MouseDown ) ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( IsMousePosValid ( & g . IO . MousePos )  & &  IsMousePosValid ( & g . IO . MousePosPrev ) )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MouseDelta  =  g . IO . MousePos  -  g . IO . MousePosPrev ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    else   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MouseDelta  =  ImVec2 ( 0.0f ,  0.0f ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( g . IO . MouseDelta . x  ! =  0.0f  | |  g . IO . MouseDelta . y  ! =  0.0f )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . NavDisableMouseHover  =  false ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . IO . MousePosPrev  =  g . IO . MousePos ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( g . IO . MouseDown ) ;  i + + )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MouseClicked [ i ]  =  g . IO . MouseDown [ i ]  & &  g . IO . MouseDownDuration [ i ]  <  0.0f ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MouseReleased [ i ]  =  ! g . IO . MouseDown [ i ]  & &  g . IO . MouseDownDuration [ i ]  > =  0.0f ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MouseDownDurationPrev [ i ]  =  g . IO . MouseDownDuration [ i ] ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MouseDownDuration [ i ]  =  g . IO . MouseDown [ i ]  ?  ( g . IO . MouseDownDuration [ i ]  <  0.0f  ?  0.0f  :  g . IO . MouseDownDuration [ i ]  +  g . IO . DeltaTime )  :  - 1.0f ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MouseDoubleClicked [ i ]  =  false ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( g . IO . MouseClicked [ i ] )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( g . Time  -  g . IO . MouseClickedTime [ i ]  <  g . IO . MouseDoubleClickTime )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( ImLengthSqr ( g . IO . MousePos  -  g . IO . MouseClickedPos [ i ] )  <  g . IO . MouseDoubleClickMaxDist  *  g . IO . MouseDoubleClickMaxDist )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    g . IO . MouseDoubleClicked [ i ]  =  true ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                g . IO . MouseClickedTime [ i ]  =  - FLT_MAX ;     // so the third click isn't turned into a double-click
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            else   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                g . IO . MouseClickedTime [ i ]  =  g . Time ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . IO . MouseClickedPos [ i ]  =  g . IO . MousePos ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . IO . MouseDragMaxDistanceAbs [ i ]  =  ImVec2 ( 0.0f ,  0.0f ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . IO . MouseDragMaxDistanceSqr [ i ]  =  0.0f ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( g . IO . MouseDown [ i ] )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImVec2  mouse_delta  =  g . IO . MousePos  -  g . IO . MouseClickedPos [ i ] ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . IO . MouseDragMaxDistanceAbs [ i ] . x  =  ImMax ( g . IO . MouseDragMaxDistanceAbs [ i ] . x ,  mouse_delta . x  <  0.0f  ?  - mouse_delta . x  :  mouse_delta . x ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . IO . MouseDragMaxDistanceAbs [ i ] . y  =  ImMax ( g . IO . MouseDragMaxDistanceAbs [ i ] . y ,  mouse_delta . y  <  0.0f  ?  - mouse_delta . y  :  mouse_delta . y ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . IO . MouseDragMaxDistanceSqr [ i ]  =  ImMax ( g . IO . MouseDragMaxDistanceSqr [ i ] ,  ImLengthSqr ( mouse_delta ) ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( g . IO . MouseClicked [ i ] )  // Clicking any mouse button reactivate mouse hovering which may have been deactivated by gamepad/keyboard navigation
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . NavDisableMouseHover  =  false ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Calculate frame-rate for the user, as a purely luxurious feature
   
					 
					 
					 
					    // Calculate frame-rate for the user, as a purely luxurious feature
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . FramerateSecPerFrameAccum  + =  g . IO . DeltaTime  -  g . FramerateSecPerFrame [ g . FramerateSecPerFrameIdx ] ;   
					 
					 
					 
					    g . FramerateSecPerFrameAccum  + =  g . IO . DeltaTime  -  g . FramerateSecPerFrame [ g . FramerateSecPerFrameIdx ] ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3427,15 +3443,7 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . IO . Framerate  =  1.0f  /  ( g . FramerateSecPerFrameAccum  /  ( float ) IM_ARRAYSIZE ( g . FramerateSecPerFrame ) ) ;   
					 
					 
					 
					    g . IO . Framerate  =  1.0f  /  ( g . FramerateSecPerFrameAccum  /  ( float ) IM_ARRAYSIZE ( g . FramerateSecPerFrame ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Handle user moving window with mouse (at the beginning of the frame to avoid input lag or sheering)
   
					 
					 
					 
					    // Handle user moving window with mouse (at the beginning of the frame to avoid input lag or sheering)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    UpdateMovingWindow ( ) ;   
					 
					 
					 
					    NewFrameUpdateMovingWindow ( ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Delay saving settings so we don't spam disk too much
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( g . SettingsDirtyTimer  >  0.0f )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . SettingsDirtyTimer  - =  g . IO . DeltaTime ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( g . SettingsDirtyTimer  < =  0.0f )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SaveIniSettingsToDisk ( g . IO . IniFilename ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Find the window we are hovering
   
					 
					 
					 
					    // Find the window we are hovering
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // - Child windows can extend beyond the limit of their parent so we need to derive HoveredRootWindow from HoveredWindow.
   
					 
					 
					 
					    // - Child windows can extend beyond the limit of their parent so we need to derive HoveredRootWindow from HoveredWindow.