@ -642,7 +642,6 @@ static void             SetWindowSize(ImGuiWindow* window, const ImVec2& size, I 
			
		
	
		
		
			
				
					
					static  void              SetWindowCollapsed ( ImGuiWindow *  window ,  bool  collapsed ,  ImGuiCond  cond ) ; static  void              SetWindowCollapsed ( ImGuiWindow *  window ,  bool  collapsed ,  ImGuiCond  cond ) ;  
			
		
	
		
		
			
				
					
					static  ImGuiWindow *      FindHoveredWindow ( ImVec2  pos ) ; static  ImGuiWindow *      FindHoveredWindow ( ImVec2  pos ) ;  
			
		
	
		
		
			
				
					
					static  ImGuiWindow *      CreateNewWindow ( const  char *  name ,  ImVec2  size ,  ImGuiWindowFlags  flags ) ; static  ImGuiWindow *      CreateNewWindow ( const  char *  name ,  ImVec2  size ,  ImGuiWindowFlags  flags ) ;  
			
		
	
		
		
			
				
					
					static  void              ClearSetNextWindowData ( ) ;  
			
		
	
		
		
			
				
					
					static  void              CheckStacksSize ( ImGuiWindow *  window ,  bool  write ) ; static  void              CheckStacksSize ( ImGuiWindow *  window ,  bool  write ) ;  
			
		
	
		
		
			
				
					
					static  ImVec2            CalcNextScrollFromScrollTargetAndClamp ( ImGuiWindow *  window ) ; static  ImVec2            CalcNextScrollFromScrollTargetAndClamp ( ImGuiWindow *  window ) ;  
			
		
	
		
		
			
				
					
					
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -2632,8 +2631,6 @@ void ImGui::Shutdown() 
			
		
	
		
		
			
				
					
					    g . FontStack . clear ( ) ;      g . FontStack . clear ( ) ;   
			
		
	
		
		
			
				
					
					    g . OpenPopupStack . clear ( ) ;      g . OpenPopupStack . clear ( ) ;   
			
		
	
		
		
			
				
					
					    g . CurrentPopupStack . clear ( ) ;      g . CurrentPopupStack . clear ( ) ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeConstraintCallback  =  NULL ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeConstraintCallbackUserData  =  NULL ;   
			
		
	
		
		
			
				
					
					    for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( g . RenderDrawLists ) ;  i + + )      for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( g . RenderDrawLists ) ;  i + + )   
			
		
	
		
		
			
				
					
					        g . RenderDrawLists [ i ] . clear ( ) ;          g . RenderDrawLists [ i ] . clear ( ) ;   
			
		
	
		
		
			
				
					
					    g . OverlayDrawList . ClearFreeMemory ( ) ;      g . OverlayDrawList . ClearFreeMemory ( ) ;   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -3816,19 +3813,12 @@ void ImGui::CloseCurrentPopup() 
			
		
	
		
		
			
				
					
					    ClosePopupToLevel ( popup_idx ) ;      ClosePopupToLevel ( popup_idx ) ;   
			
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					static  inline  void  ClearSetNextWindowData ( )  
			
		
	
		
		
			
				
					
					{  
			
		
	
		
		
			
				
					
					    // FIXME-OPT
   
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . PosCond  =  g . NextWindow . SizeCond  =  g . NextWindow . ContentSizeCond  =  g . NextWindow . CollapsedCond  =  g . NextWindow . SizeConstraintCond  =  g . NextWindow . FocusCond  =  0 ;   
			
		
	
		
		
			
				
					
					}  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					bool  ImGui : : BeginPopupEx ( ImGuiID  id ,  ImGuiWindowFlags  extra_flags ) bool  ImGui : : BeginPopupEx ( ImGuiID  id ,  ImGuiWindowFlags  extra_flags )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    if  ( ! IsPopupOpen ( id ) )      if  ( ! IsPopupOpen ( id ) )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        ClearSetNextWindowData ( ) ;  // We behave like Begin() and need to consume those values
          g . NextWindowData . Clear ( ) ;  // We behave like Begin() and need to consume those values
   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        return  false ;          return  false ;   
			
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -3850,7 +3840,7 @@ bool ImGui::BeginPopup(const char* str_id) 
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    if  ( g . OpenPopupStack . Size  < =  g . CurrentPopupStack . Size )  // Early out for performance
      if  ( g . OpenPopupStack . Size  < =  g . CurrentPopupStack . Size )  // Early out for performance
   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        ClearSetNextWindowData ( ) ;  // We behave like Begin() and need to consume those values
          g . NextWindowData . Clear ( ) ;  // We behave like Begin() and need to consume those values
   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        return  false ;          return  false ;   
			
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					    return  BeginPopupEx ( g . CurrentWindow - > GetID ( str_id ) ,  ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings ) ;      return  BeginPopupEx ( g . CurrentWindow - > GetID ( str_id ) ,  ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings ) ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -3875,12 +3865,12 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags ext 
			
		
	
		
		
			
				
					
					    const  ImGuiID  id  =  window - > GetID ( name ) ;      const  ImGuiID  id  =  window - > GetID ( name ) ;   
			
		
	
		
		
			
				
					
					    if  ( ! IsPopupOpen ( id ) )      if  ( ! IsPopupOpen ( id ) )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        ClearSetNextWindowData ( ) ;  // We behave like Begin() and need to consume those values
          g . NextWindowData . Clear ( ) ;  // We behave like Begin() and need to consume those values
   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        return  false ;          return  false ;   
			
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    // Center modal windows by default
      // Center modal windows by default
   
			
		
	
		
		
			
				
					
					    if  ( g . NextWindow . PosCond  = =  0 )      if  ( g . NextWindowData  . PosCond  = =  0 )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        SetNextWindowPos ( g . IO . DisplaySize  *  0.5f ,  ImGuiCond_Appearing ,  ImVec2 ( 0.5f ,  0.5f ) ) ;          SetNextWindowPos ( g . IO . DisplaySize  *  0.5f ,  ImGuiCond_Appearing ,  ImVec2 ( 0.5f ,  0.5f ) ) ;   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    ImGuiWindowFlags  flags  =  extra_flags | ImGuiWindowFlags_Popup | ImGuiWindowFlags_Modal | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings ;      ImGuiWindowFlags  flags  =  extra_flags | ImGuiWindowFlags_Popup | ImGuiWindowFlags_Modal | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings ;   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -4192,20 +4182,20 @@ static ImGuiWindow* CreateNewWindow(const char* name, ImVec2 size, ImGuiWindowFl 
			
		
	
		
		
			
				
					
					static  ImVec2  CalcSizeAfterConstraint ( ImGuiWindow *  window ,  ImVec2  new_size ) static  ImVec2  CalcSizeAfterConstraint ( ImGuiWindow *  window ,  ImVec2  new_size )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    if  ( g . NextWindow . SizeConstraintCond  ! =  0 )      if  ( g . NextWindowData  . SizeConstraintCond  ! =  0 )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        // Using -1,-1 on either X/Y axis to preserve the current size.
          // Using -1,-1 on either X/Y axis to preserve the current size.
   
			
		
	
		
		
			
				
					
					        ImRect  cr  =  g . NextWindow . SizeConstraintRect ;          ImRect  cr  =  g . NextWindowData  . SizeConstraintRect ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        new_size . x  =  ( cr . Min . x  > =  0  & &  cr . Max . x  > =  0 )  ?  ImClamp ( new_size . x ,  cr . Min . x ,  cr . Max . x )  :  window - > SizeFull . x ;          new_size . x  =  ( cr . Min . x  > =  0  & &  cr . Max . x  > =  0 )  ?  ImClamp ( new_size . x ,  cr . Min . x ,  cr . Max . x )  :  window - > SizeFull . x ;   
			
		
	
		
		
			
				
					
					        new_size . y  =  ( cr . Min . y  > =  0  & &  cr . Max . y  > =  0 )  ?  ImClamp ( new_size . y ,  cr . Min . y ,  cr . Max . y )  :  window - > SizeFull . y ;          new_size . y  =  ( cr . Min . y  > =  0  & &  cr . Max . y  > =  0 )  ?  ImClamp ( new_size . y ,  cr . Min . y ,  cr . Max . y )  :  window - > SizeFull . y ;   
			
		
	
		
		
			
				
					
					        if  ( g . NextWindow . SizeConstraintCallback )          if  ( g . NextWindowData  . SizeConstraintCallback )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        {          {   
			
		
	
		
		
			
				
					
					            ImGuiSizeConstraintCallbackData  data ;              ImGuiSizeConstraintCallbackData  data ;   
			
		
	
		
		
			
				
					
					            data . UserData  =  g . NextWindow . SizeConstraintCallbackUserData ;              data . UserData  =  g . NextWindowData  . SizeConstraintCallbackUserData ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					            data . Pos  =  window - > Pos ;              data . Pos  =  window - > Pos ;   
			
		
	
		
		
			
				
					
					            data . CurrentSize  =  window - > SizeFull ;              data . CurrentSize  =  window - > SizeFull ;   
			
		
	
		
		
			
				
					
					            data . DesiredSize  =  new_size ;              data . DesiredSize  =  new_size ;   
			
		
	
		
		
			
				
					
					            g . NextWindow . SizeConstraintCallback ( & data ) ;              g . NextWindowData  . SizeConstraintCallback ( & data ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					            new_size  =  data . DesiredSize ;              new_size  =  data . DesiredSize ;   
			
		
	
		
		
			
				
					
					        }          }   
			
		
	
		
		
			
				
					
					    }      }   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -4351,7 +4341,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
			
		
	
		
		
			
				
					
					    ImGuiWindow *  window  =  FindWindowByName ( name ) ;      ImGuiWindow *  window  =  FindWindowByName ( name ) ;   
			
		
	
		
		
			
				
					
					    if  ( ! window )      if  ( ! window )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        ImVec2  size_on_first_use  =  ( g . NextWindow . SizeCond  ! =  0 )  ?  g . NextWindow . SizeVal  :  ImVec2 ( 0.0f ,  0.0f ) ;  // Any condition flag will do since we are creating a new window here.
          ImVec2  size_on_first_use  =  ( g . NextWindowData  . SizeCond  ! =  0 )  ?  g . NextWindowData  . SizeVal  :  ImVec2 ( 0.0f ,  0.0f ) ;  // Any condition flag will do since we are creating a new window here.
   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        window  =  CreateNewWindow ( name ,  size_on_first_use ,  flags ) ;          window  =  CreateNewWindow ( name ,  size_on_first_use ,  flags ) ;   
			
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -4396,50 +4386,50 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
			
		
	
		
		
			
				
					
					    // Process SetNextWindow***() calls
      // Process SetNextWindow***() calls
   
			
		
	
		
		
			
				
					
					    bool  window_pos_set_by_api  =  false ;      bool  window_pos_set_by_api  =  false ;   
			
		
	
		
		
			
				
					
					    bool  window_size_x_set_by_api  =  false ,  window_size_y_set_by_api  =  false ;      bool  window_size_x_set_by_api  =  false ,  window_size_y_set_by_api  =  false ;   
			
		
	
		
		
			
				
					
					    if  ( g . NextWindow . PosCond )      if  ( g . NextWindowData  . PosCond )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        window_pos_set_by_api  =  ( window - > SetWindowPosAllowFlags  &  g . NextWindow . PosCond )  ! =  0 ;          window_pos_set_by_api  =  ( window - > SetWindowPosAllowFlags  &  g . NextWindowData  . PosCond )  ! =  0 ;   
			
				
				
			
		
	
		
		
			
				
					
					        if  ( window_pos_set_by_api  & &  ImLengthSqr ( g . NextWindow . PosPivotVal )  >  0.00001f )          if  ( window_pos_set_by_api  & &  ImLengthSqr ( g . NextWindowData  . PosPivotVal )  >  0.00001f )   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					        {          {   
			
		
	
		
		
			
				
					
					            // May be processed on the next frame if this is our first frame and we are measuring size
              // May be processed on the next frame if this is our first frame and we are measuring size
   
			
		
	
		
		
			
				
					
					            // FIXME: Look into removing the branch so everything can go through this same code path for consistency.
              // FIXME: Look into removing the branch so everything can go through this same code path for consistency.
   
			
		
	
		
		
			
				
					
					            window - > SetWindowPosVal  =  g . NextWindow . PosVal ;              window - > SetWindowPosVal  =  g . NextWindowData  . PosVal ;   
			
				
				
			
		
	
		
		
			
				
					
					            window - > SetWindowPosPivot  =  g . NextWindow . PosPivotVal ;              window - > SetWindowPosPivot  =  g . NextWindowData  . PosPivotVal ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					            window - > SetWindowPosAllowFlags  & =  ~ ( ImGuiCond_Once  |  ImGuiCond_FirstUseEver  |  ImGuiCond_Appearing ) ;              window - > SetWindowPosAllowFlags  & =  ~ ( ImGuiCond_Once  |  ImGuiCond_FirstUseEver  |  ImGuiCond_Appearing ) ;   
			
		
	
		
		
			
				
					
					        }          }   
			
		
	
		
		
			
				
					
					        else          else   
			
		
	
		
		
			
				
					
					        {          {   
			
		
	
		
		
			
				
					
					            SetWindowPos ( window ,  g . NextWindow . PosVal ,  g . NextWindow . PosCond ) ;              SetWindowPos ( window ,  g . NextWindowData  . PosVal ,  g . NextWindowData  . PosCond ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        }          }   
			
		
	
		
		
			
				
					
					        g . NextWindow . PosCond  =  0 ;          g . NextWindowData  . PosCond  =  0 ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					    if  ( g . NextWindow . SizeCond )      if  ( g . NextWindowData  . SizeCond )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        window_size_x_set_by_api  =  ( window - > SetWindowSizeAllowFlags  &  g . NextWindow . SizeCond )  ! =  0  & &  ( g . NextWindow . SizeVal . x  >  0.0f ) ;          window_size_x_set_by_api  =  ( window - > SetWindowSizeAllowFlags  &  g . NextWindowData  . SizeCond )  ! =  0  & &  ( g . NextWindowData  . SizeVal . x  >  0.0f ) ;   
			
				
				
			
		
	
		
		
			
				
					
					        window_size_y_set_by_api  =  ( window - > SetWindowSizeAllowFlags  &  g . NextWindow . SizeCond )  ! =  0  & &  ( g . NextWindow . SizeVal . y  >  0.0f ) ;          window_size_y_set_by_api  =  ( window - > SetWindowSizeAllowFlags  &  g . NextWindowData  . SizeCond )  ! =  0  & &  ( g . NextWindowData  . SizeVal . y  >  0.0f ) ;   
			
				
				
			
		
	
		
		
			
				
					
					        SetWindowSize ( window ,  g . NextWindow . SizeVal ,  g . NextWindow . SizeCond ) ;          SetWindowSize ( window ,  g . NextWindowData  . SizeVal ,  g . NextWindowData  . SizeCond ) ;   
			
				
				
			
		
	
		
		
			
				
					
					        g . NextWindow . SizeCond  =  0 ;          g . NextWindowData  . SizeCond  =  0 ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					    if  ( g . NextWindow . ContentSizeCond )      if  ( g . NextWindowData  . ContentSizeCond )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        // Adjust passed "client size" to become a "window size"
          // Adjust passed "client size" to become a "window size"
   
			
		
	
		
		
			
				
					
					        window - > SizeContentsExplicit  =  g . NextWindow . ContentSizeVal ;          window - > SizeContentsExplicit  =  g . NextWindowData  . ContentSizeVal ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        window - > SizeContentsExplicit . y  + =  window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ;          window - > SizeContentsExplicit . y  + =  window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ;   
			
		
	
		
		
			
				
					
					        g . NextWindow . ContentSizeCond  =  0 ;          g . NextWindowData  . ContentSizeCond  =  0 ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					    else  if  ( first_begin_of_the_frame )      else  if  ( first_begin_of_the_frame )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        window - > SizeContentsExplicit  =  ImVec2 ( 0.0f ,  0.0f ) ;          window - > SizeContentsExplicit  =  ImVec2 ( 0.0f ,  0.0f ) ;   
			
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					    if  ( g . NextWindow . CollapsedCond )      if  ( g . NextWindowData  . CollapsedCond )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        SetWindowCollapsed ( window ,  g . NextWindow . CollapsedVal ,  g . NextWindow . CollapsedCond ) ;          SetWindowCollapsed ( window ,  g . NextWindowData  . CollapsedVal ,  g . NextWindowData  . CollapsedCond ) ;   
			
				
				
			
		
	
		
		
			
				
					
					        g . NextWindow . CollapsedCond  =  0 ;          g . NextWindowData  . CollapsedCond  =  0 ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					    if  ( g . NextWindow . FocusCond )      if  ( g . NextWindowData  . FocusCond )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        SetWindowFocus ( ) ;          SetWindowFocus ( ) ;   
			
		
	
		
		
			
				
					
					        g . NextWindow . FocusCond  =  0 ;          g . NextWindowData  . FocusCond  =  0 ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					    if  ( window - > Appearing )      if  ( window - > Appearing )   
			
		
	
		
		
			
				
					
					        SetWindowConditionAllowFlags ( window ,  ImGuiCond_Appearing ,  false ) ;          SetWindowConditionAllowFlags ( window ,  ImGuiCond_Appearing ,  false ) ;   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -4939,7 +4929,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
			
		
	
		
		
			
				
					
					        window - > WriteAccessed  =  false ;          window - > WriteAccessed  =  false ;   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    window - > BeginCount + + ;      window - > BeginCount + + ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeConstraintCond  =  0 ;      g . NextWindowData  . SizeConstraintCond  =  0 ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    // Child window can be out of sight and have "negative" clip windows.
      // Child window can be out of sight and have "negative" clip windows.
   
			
		
	
		
		
			
				
					
					    // Mark them as collapsed so commands are skipped earlier (we can't manually collapse because they have no title bar).
      // Mark them as collapsed so commands are skipped earlier (we can't manually collapse because they have no title bar).
   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -5701,45 +5691,45 @@ void ImGui::SetWindowFocus(const char* name) 
			
		
	
		
		
			
				
					
					void  ImGui : : SetNextWindowPos ( const  ImVec2 &  pos ,  ImGuiCond  cond ,  const  ImVec2 &  pivot ) void  ImGui : : SetNextWindowPos ( const  ImVec2 &  pos ,  ImGuiCond  cond ,  const  ImVec2 &  pivot )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . PosVal  =  pos ;      g . NextWindowData  . PosVal  =  pos ;   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . PosPivotVal  =  pivot ;      g . NextWindowData  . PosPivotVal  =  pivot ;   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . PosCond  =  cond  ?  cond  :  ImGuiCond_Always ;      g . NextWindowData  . PosCond  =  cond  ?  cond  :  ImGuiCond_Always ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void  ImGui : : SetNextWindowSize ( const  ImVec2 &  size ,  ImGuiCond  cond ) void  ImGui : : SetNextWindowSize ( const  ImVec2 &  size ,  ImGuiCond  cond )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeVal  =  size ;      g . NextWindowData  . SizeVal  =  size ;   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeCond  =  cond  ?  cond  :  ImGuiCond_Always ;      g . NextWindowData  . SizeCond  =  cond  ?  cond  :  ImGuiCond_Always ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void  ImGui : : SetNextWindowSizeConstraints ( const  ImVec2 &  size_min ,  const  ImVec2 &  size_max ,  ImGuiSizeConstraintCallback  custom_callback ,  void *  custom_callback_user_data ) void  ImGui : : SetNextWindowSizeConstraints ( const  ImVec2 &  size_min ,  const  ImVec2 &  size_max ,  ImGuiSizeConstraintCallback  custom_callback ,  void *  custom_callback_user_data )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeConstraintCond  =  ImGuiCond_Always ;      g . NextWindowData  . SizeConstraintCond  =  ImGuiCond_Always ;   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeConstraintRect  =  ImRect ( size_min ,  size_max ) ;      g . NextWindowData  . SizeConstraintRect  =  ImRect ( size_min ,  size_max ) ;   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeConstraintCallback  =  custom_callback ;      g . NextWindowData  . SizeConstraintCallback  =  custom_callback ;   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeConstraintCallbackUserData  =  custom_callback_user_data ;      g . NextWindowData  . SizeConstraintCallbackUserData  =  custom_callback_user_data ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void  ImGui : : SetNextWindowContentSize ( const  ImVec2 &  size ) void  ImGui : : SetNextWindowContentSize ( const  ImVec2 &  size )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . ContentSizeVal  =  size ;   // In Begin() we will add the size of window decorations (title bar, menu etc.) to that to form a SizeContents value.
      g . NextWindowData  . ContentSizeVal  =  size ;   // In Begin() we will add the size of window decorations (title bar, menu etc.) to that to form a SizeContents value.
   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . ContentSizeCond  =  ImGuiCond_Always ;      g . NextWindowData  . ContentSizeCond  =  ImGuiCond_Always ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void  ImGui : : SetNextWindowCollapsed ( bool  collapsed ,  ImGuiCond  cond ) void  ImGui : : SetNextWindowCollapsed ( bool  collapsed ,  ImGuiCond  cond )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . CollapsedVal  =  collapsed ;      g . NextWindowData  . CollapsedVal  =  collapsed ;   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . CollapsedCond  =  cond  ?  cond  :  ImGuiCond_Always ;      g . NextWindowData  . CollapsedCond  =  cond  ?  cond  :  ImGuiCond_Always ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void  ImGui : : SetNextWindowFocus ( ) void  ImGui : : SetNextWindowFocus ( )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    g . NextWindow . FocusCond  =  ImGuiCond_Always ;      g . NextWindowData  . FocusCond  =  ImGuiCond_Always ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					// In window space (not screen space!)
 // In window space (not screen space!)
  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -9162,8 +9152,8 @@ bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboF 
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    // Always consume the SetNextWindowSizeConstraint() call in our early return paths
      // Always consume the SetNextWindowSizeConstraint() call in our early return paths
   
			
		
	
		
		
			
				
					
					    ImGuiContext &  g  =  * GImGui ;      ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
		
			
				
					
					    ImGuiCond  backup_next_window_size_constraint  =  g . NextWindow . SizeConstraintCond ;      ImGuiCond  backup_next_window_size_constraint  =  g . NextWindowData  . SizeConstraintCond ;   
			
				
				
			
		
	
		
		
			
				
					
					    g . NextWindow . SizeConstraintCond  =  0 ;      g . NextWindowData  . SizeConstraintCond  =  0 ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					        
         
  
			
		
	
		
		
			
				
					
					    ImGuiWindow *  window  =  GetCurrentWindow ( ) ;      ImGuiWindow *  window  =  GetCurrentWindow ( ) ;   
			
		
	
		
		
			
				
					
					    if  ( window - > SkipItems )      if  ( window - > SkipItems )   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -9205,8 +9195,8 @@ bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboF 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  ( backup_next_window_size_constraint )      if  ( backup_next_window_size_constraint )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        g . NextWindow . SizeConstraintCond  =  backup_next_window_size_constraint ;          g . NextWindowData  . SizeConstraintCond  =  backup_next_window_size_constraint ;   
			
				
				
			
		
	
		
		
			
				
					
					        g . NextWindow . SizeConstraintRect . Min . x  =  ImMax ( g . NextWindow . SizeConstraintRect . Min . x ,  w ) ;          g . NextWindowData  . SizeConstraintRect . Min . x  =  ImMax ( g . NextWindowData  . SizeConstraintRect . Min . x ,  w ) ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					    }      }   
			
		
	
		
		
			
				
					
					    else      else   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -9268,7 +9258,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi 
			
		
	
		
		
			
				
					
					        items_getter ( data ,  * current_item ,  & preview_text ) ;          items_getter ( data ,  * current_item ,  & preview_text ) ;   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    // The old Combo() API exposed "popup_max_height_in_items", however the new more general BeginCombo() API doesn't, so we emulate it here.
      // The old Combo() API exposed "popup_max_height_in_items", however the new more general BeginCombo() API doesn't, so we emulate it here.
   
			
		
	
		
		
			
				
					
					    if  ( popup_max_height_in_items  ! =  - 1  & &  ! g . NextWindow . SizeConstraintCond )      if  ( popup_max_height_in_items  ! =  - 1  & &  ! g . NextWindowData  . SizeConstraintCond )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        float  popup_max_height  =  CalcMaxPopupHeightFromItemCount ( popup_max_height_in_items ) ;          float  popup_max_height  =  CalcMaxPopupHeightFromItemCount ( popup_max_height_in_items ) ;   
			
		
	
		
		
			
				
					
					        SetNextWindowSizeConstraints ( ImVec2 ( 0 , 0 ) ,  ImVec2 ( FLT_MAX ,  popup_max_height ) ) ;          SetNextWindowSizeConstraints ( ImVec2 ( 0 , 0 ) ,  ImVec2 ( FLT_MAX ,  popup_max_height ) ) ;