@ -766,7 +766,7 @@ const ImGuiID           IMGUI_VIEWPORT_DEFAULT_ID = 0x11111111; // Using an arbi 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  ImRect     GetViewportRect ( ImGuiWindow *  window )  {  return  window - > Viewport - > GetRect ( ) ;  }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  ImVec2     ConvertViewportPosToPlatformPos ( const  ImVec2 &  imgui_pos ,  ImGuiViewport *  viewport )     {  return  imgui_pos  -  viewport - > Pos  +  viewport - > PlatformPos ;  }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  ImVec2     ConvertPlatformPosToViewportPos ( const  ImVec2 &  platform_pos ,  ImGuiViewport *  viewport )  {  return  platform_pos  -  viewport - > PlatformPos  +  viewport - > Pos ;  }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  ImGuiViewportP *   AddViewport ( ImGuiWindow *  window ,  ImGuiID  id ,  ImGuiViewportFlags  flags ,  const  ImVec2 &  platform_pos ,  const  ImVec2 &  size ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  ImGuiViewportP *   AddUpdate Viewport ( ImGuiWindow *  window ,  ImGuiID  id ,  ImGuiViewportFlags  flags ,  const  ImVec2 &  platform_pos ,  const  ImVec2 &  size ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void              UpdateViewports ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void              UpdateSelectWindowViewport ( ImGuiWindow *  window ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void              SetCurrentViewport ( ImGuiViewportP *  viewport ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1948,8 +1948,9 @@ ImGuiWindow::ImGuiWindow(ImGuiContext* context, const char* name) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    Scroll  =  ImVec2 ( 0.0f ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ScrollTarget  =  ImVec2 ( FLT_MAX ,  FLT_MAX ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ScrollTargetCenterRatio  =  ImVec2 ( 0.5f ,  0.5f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ScrollbarX  =  ScrollbarY  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ScrollbarSizes  =  ImVec2 ( 0.0f ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ScrollbarX  =  ScrollbarY  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ViewportOwned  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    Active  =  WasActive  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    WriteAccessed  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    Collapsed  =  false ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3313,24 +3314,25 @@ static void ImGui::NewFrameUpdateMovingWindowDropViewport(ImGuiWindow* window) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  mouse_viewport_rect  =  g . MousePosViewport - > GetRect ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVec2  window_pos_in_mouse_viewport  =  ConvertPlatformPosToViewportPos ( ConvertViewportPosToPlatformPos ( window - > Pos ,  window - > Viewport ) ,  g . MousePosViewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  window_rect_in_mouse_viewport  =  ImRect ( window_pos_in_mouse_viewport ,  window_pos_in_mouse_viewport  +  window - > Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ( g . MousePosViewport - > Flags  &  ImGuiViewportFlags_CanHostOtherWindows )  & &    mouse_viewport_rect . Contains ( window_rect_in_mouse_viewport ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ( g . MousePosViewport - > Flags  &  ImGuiViewportFlags_CanHostOtherWindows )  & &  mouse_viewport_rect . Contains ( window_rect_in_mouse_viewport ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Drop on an existing viewport
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiViewportP *  old_viewport  =  window - > Viewport ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        SetWindowViewportTranslateToPreservePlatformPos ( window ,  window - > Viewport ,  g . MousePosViewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Our current scheme allow any window to land on a viewport, so when that viewport merges, move other windows as well
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // FIXME-OPT
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > Flags  &  ImGuiWindowFlags_FullViewport )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Move child/hosted windows as well (FIXME-OPT)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > ViewportOwned )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( int  n  =  0 ;  n  <  g . Windows . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( g . Windows [ n ] - > Viewport  = =  old_viewport )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    SetWindowViewportTranslateToPreservePlatformPos ( g . Windows [ n ] ,  old_viewport ,  g . MousePosViewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > ViewportOwned  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Create/persist new viewport
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImVec2  platform_pos  =  ConvertViewportPosToPlatformPos ( window - > Pos ,  window - > Viewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiViewportP *  viewport  =  AddViewport ( window ,  window - > ID ,  0 ,  platform_pos ,  window - > Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiViewportP *  viewport  =  AddUpdateViewport ( window ,  window - > ID ,  0 ,  platform_pos ,  window - > Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        IM_ASSERT ( viewport  = =  window - > Viewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        SetWindowViewportTranslateToPreservePlatformPos ( window ,  window - > Viewport ,  viewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3476,7 +3478,7 @@ static void ImGui::UpdateViewports() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVec2  main_viewport_platform_pos  =  ImVec2 ( 0.0f ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ( g . IO . ConfigFlags  &  ImGuiConfigFlags_ViewportsEnable ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        main_viewport_platform_pos  =  g . PlatformIO . Platform_GetWindowPos ( main_viewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    AddViewport ( NULL ,  IMGUI_VIEWPORT_DEFAULT_ID ,  ImGuiViewportFlags_CanHostOtherWindows ,  main_viewport_platform_pos ,  g . IO . DisplaySize ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    AddUpdate Viewport ( NULL ,  IMGUI_VIEWPORT_DEFAULT_ID ,  ImGuiViewportFlags_CanHostOtherWindows ,  main_viewport_platform_pos ,  g . IO . DisplaySize ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! ( g . IO . ConfigFlags  &  ImGuiConfigFlags_ViewportsEnable ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -4699,7 +4701,7 @@ void ImGui::SetCurrentViewport(ImGuiViewportP* viewport) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        g . PlatformIO . Platform_OnChangedViewport ( g . CurrentViewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					ImGuiViewportP *  ImGui : : AddViewport ( ImGuiWindow *  window ,  ImGuiID  id ,  ImGuiViewportFlags  flags ,  const  ImVec2 &  platform_pos ,  const  ImVec2 &  size )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					ImGuiViewportP *  ImGui : : AddUpdate Viewport ( ImGuiWindow *  window ,  ImGuiID  id ,  ImGuiViewportFlags  flags ,  const  ImVec2 &  platform_pos ,  const  ImVec2 &  size )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * GImGui ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    IM_ASSERT ( id  ! =  0 ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -4733,6 +4735,9 @@ ImGuiViewportP* ImGui::AddViewport(ImGuiWindow* window, ImGuiID id, ImGuiViewpor 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    viewport - > PlatformPos  =  platform_pos ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    viewport - > LastFrameActive  =  g . FrameCount ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( window  ! =  NULL )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > ViewportOwned  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Request an initial DpiScale before the OS platform window creation
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // This is so we can select an appropriate font size on the first frame of our window lifetime
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( g . PlatformIO . Platform_GetWindowDpiScale )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6070,7 +6075,7 @@ static ImVec2 CalcSizeAutoFit(ImGuiWindow* window, const ImVec2& size_contents) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // When the window cannot fit all contents (either because of constraints, either because screen is too small): we are growing the size on the other axis to compensate for expected scrollbar. FIXME: Might turn bigger than ViewportSize-WindowPadding.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImVec2  viewport_size  =  ( window - > Flags  &  ImGuiWindowFlags_FullViewport )   ?  ImVec2 ( FLT_MAX ,  FLT_MAX )  :  window - > Viewport - > Size ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImVec2  viewport_size  =  window - > ViewportOwned   ?  ImVec2 ( FLT_MAX ,  FLT_MAX )  :  window - > Viewport - > Size ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        size_auto_fit  =  ImClamp ( size_contents ,  style . WindowMinSize ,  ImMax ( style . WindowMinSize ,  viewport_size  -  g . Style . DisplaySafeAreaPadding ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImVec2  size_auto_fit_after_constraint  =  CalcSizeAfterConstraint ( window ,  size_auto_fit ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( size_auto_fit_after_constraint . x  <  size_contents . x  & &  ! ( flags  &  ImGuiWindowFlags_NoScrollbar )  & &  ( flags  &  ImGuiWindowFlags_HorizontalScrollbar ) )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6156,6 +6161,7 @@ static void ImGui::UpdateSelectWindowViewport(ImGuiWindow* window) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * GImGui ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiWindowFlags  flags  =  window - > Flags ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > ViewportOwned  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Restore main viewport if multi-viewport is not supported by the back-end
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiViewportP *  main_viewport  =  g . Viewports [ 0 ] ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6186,8 +6192,7 @@ static void ImGui::UpdateSelectWindowViewport(ImGuiWindow* window) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > Viewport  =  FindViewportByID ( window - > ViewportId ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > Viewport  = =  NULL  & &  window - > ViewportPlatformPos . x  ! =  FLT_MAX  & &  window - > ViewportPlatformPos . y  ! =  FLT_MAX )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiViewportP *  viewport  =  AddViewport ( window ,  window - > ID ,  ImGuiViewportFlags_NoDecoration ,  window - > ViewportPlatformPos ,  window - > Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Flags  | =  ImGuiWindowFlags_FullViewport ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiViewportP *  viewport  =  AddUpdateViewport ( window ,  window - > ID ,  ImGuiViewportFlags_NoDecoration ,  window - > ViewportPlatformPos ,  window - > Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Viewport  =  viewport ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            created_viewport  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -6213,8 +6218,7 @@ static void ImGui::UpdateSelectWindowViewport(ImGuiWindow* window) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Calculate mouse position in OS/platform coordinates, create a Viewport at this position.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImVec2  platform_pos  =  ConvertViewportPosToPlatformPos ( g . IO . MousePos  -  g . ActiveIdClickOffset ,  g . MousePosViewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiViewportFlags  viewport_flags  =  ImGuiViewportFlags_NoDecoration  |  ImGuiViewportFlags_NoFocusOnAppearing  |  ImGuiViewportFlags_NoInputs ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiViewportP *  viewport  =  AddViewport ( window ,  window - > ID ,  viewport_flags ,  platform_pos ,  window - > Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Flags  | =  ImGuiWindowFlags_FullViewport ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiViewportP *  viewport  =  AddUpdateViewport ( window ,  window - > ID ,  viewport_flags ,  platform_pos ,  window - > Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Viewport  =  viewport ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            created_viewport  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -6239,14 +6243,14 @@ static void ImGui::UpdateSelectWindowViewport(ImGuiWindow* window) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! window - > Viewport - > PlatformRequestResize )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Viewport - > Size  =  window - > Size ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > Viewport - > PlatformPos  =  ConvertViewportPosToPlatformPos ( window - > Pos ,  window - > Viewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > Flags  | =  ImGuiWindowFlags_FullViewport ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > ViewportOwned  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // If the OS window has a title bar, hide our imgui title bar
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ( window - > Flags  &  ImGuiWindowFlags_FullViewport )   & &  ! ( window - > Viewport - > Flags  &  ImGuiViewportFlags_NoDecoration ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( window - > ViewportOwned   & &  ! ( window - > Viewport - > Flags  &  ImGuiViewportFlags_NoDecoration ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > Flags  | =  ImGuiWindowFlags_NoTitleBar ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( window - > Flags  &  ImGuiWindowFlags_Full Viewport)   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( window - > ViewportOwned  )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // We currently have window fully covering a viewport and we disable WindowBg alpha, so clearing is not necessary
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > Viewport - > Flags  | =  ImGuiViewportFlags_NoRendererClear ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6386,7 +6390,7 @@ static void ImGui::UpdateManualResize(ImGuiWindow* window, const ImVec2& size_au 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( pos_target . x  ! =  FLT_MAX )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > Flags  &  ImGuiWindowFlags_Full Viewport)   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > ViewportOwned  )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Viewport - > PlatformPos  =  ConvertViewportPosToPlatformPos ( ImFloor ( pos_target ) ,  window - > Viewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Pos  =  window - > PosFloat  =  ImFloor ( pos_target ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6557,7 +6561,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Lock window rounding, border size and padding for the frame (so that altering them doesn't cause inconsistencies)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > WindowRounding  =  ( flags  &  ImGuiWindowFlags_ChildWindow )  ?  style . ChildRounding  :  ( ( flags  &  ImGuiWindowFlags_Popup )  & &  ! ( flags  &  ImGuiWindowFlags_Modal ) )  ?  style . PopupRounding  :  style . WindowRounding ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > Flags  &  ImGuiWindowFlags_Full Viewport)   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > ViewportOwned  )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > WindowRounding  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > WindowBorderSize  =  ( flags  &  ImGuiWindowFlags_ChildWindow )  ?  style . ChildBorderSize  :  ( ( flags  &  ( ImGuiWindowFlags_Popup  |  ImGuiWindowFlags_Tooltip ) )  & &  ! ( flags  &  ImGuiWindowFlags_Modal ) )  ?  style . PopupBorderSize  :  style . WindowBorderSize ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > WindowPadding  =  style . WindowPadding ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6683,7 +6687,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Clamp position so window stays visible within its viewport
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Ignore zero-sized display explicitly to avoid losing positions if a window manager reports zero-sized window when initializing or minimizing.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImRect  viewport_rect ( GetViewportRect ( window ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! window_pos_set_by_api  & &  ! ( flags  &  ( ImGuiWindowFlags_ChildWindow  |  ImGuiWindowFlags_Tooltip  |  ImGuiWindowFlags_FullViewport ) )   & &  window - > AutoFitFramesX  < =  0  & &  window - > AutoFitFramesY  < =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! window_pos_set_by_api  & &  ! ( flags  &  ( ImGuiWindowFlags_ChildWindow  |  ImGuiWindowFlags_Tooltip ) )  & &  ! window - > ViewportOwned   & &  window - > AutoFitFramesX  < =  0  & &  window - > AutoFitFramesY  < =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( viewport_rect . GetWidth ( )  >  0  & &  viewport_rect . GetHeight ( )  >  0.0f )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                ImVec2  padding  =  ImMax ( style . DisplayWindowPadding ,  style . DisplaySafeAreaPadding ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6724,12 +6728,11 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // When a window is marked as owning its viewport, we immediately update the viewport after a resize
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > ViewportPlatformPos  =  window - > Viewport - > PlatformPos ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( flags  &  ImGuiWindowFlags_FullViewport )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( window - > Size . x  ! =  window - > Viewport - > Size . x  | |  window - > Size . y  ! =  window - > Viewport - > Size . y )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                window - > Viewport - > Size  =  window - > SizeFull ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                viewport_rect  =  GetViewportRect ( window ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > ViewportOwned  & &  ( window - > Size . x  ! =  window - > Viewport - > Size . x  | |  window - > Size . y  ! =  window - > Viewport - > Size . y ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Viewport - > Size  =  window - > SizeFull ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            viewport_rect  =  GetViewportRect ( window ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // DRAWING
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6780,7 +6783,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImU32  bg_col  =  GetColorU32 ( GetWindowBgColorIdxFromFlags ( flags ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( g . NextWindowData . BgAlphaCond  ! =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                bg_col  =  ( bg_col  &  ~ IM_COL32_A_MASK )  |  ( IM_F32_TO_INT8_SAT ( g . NextWindowData . BgAlphaVal )  < <  IM_COL32_A_SHIFT ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( window - > Flags  &  ImGuiWindowFlags_Full Viewport)   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( window - > ViewportOwned  )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                bg_col  =  ( bg_col  |  IM_COL32_A_MASK ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > DrawList - > AddRectFilled ( window - > Pos + ImVec2 ( 0 , window - > TitleBarHeight ( ) ) ,  window - > Pos + window - > Size ,  bg_col ,  window_rounding ,  ( flags  &  ImGuiWindowFlags_NoTitleBar )  ?  ImDrawCornerFlags_All  :  ImDrawCornerFlags_Bot ) ;