@ -1502,8 +1502,8 @@ static inline void SetCurrentWindow(ImGuiWindow* window) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  inline  ImGuiWindow *  GetParentWindow ( )  
					 
					 
					 
					static  inline  ImGuiWindow *  GetParentWindow ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( g . CurrentWindowStack . size ( )   > =  2 ) ;   
					 
					 
					 
					    IM_ASSERT ( g . CurrentWindowStack . Size   > =  2 ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  g . CurrentWindowStack [ g . CurrentWindowStack . size ( )   -  2 ] ;   
					 
					 
					 
					    return  g . CurrentWindowStack [ g . CurrentWindowStack . Size   -  2 ] ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  SetActiveId ( ImGuiID  id ,  ImGuiWindow *  window  =  NULL )  
 
					 
					 
					 
					static  void  SetActiveId ( ImGuiID  id ,  ImGuiWindow *  window  =  NULL )  
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1638,7 +1638,7 @@ void ImGuiStorage::SetVoidPtr(ImU32 key, void* val) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void  ImGuiStorage : : SetAllInt ( int  v )  
					 
					 
					 
					void  ImGuiStorage : : SetAllInt ( int  v )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  Data . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  Data . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        Data [ i ] . val_i  =  v ;   
					 
					 
					 
					        Data [ i ] . val_i  =  v ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1694,7 +1694,7 @@ void ImGuiTextFilter::Build() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    input_range . split ( ' , ' ,  Filters ) ;   
					 
					 
					 
					    input_range . split ( ' , ' ,  Filters ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    CountGrep  =  0 ;   
					 
					 
					 
					    CountGrep  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  Filters . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  Filters . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        Filters [ i ] . trim_blanks ( ) ;   
					 
					 
					 
					        Filters [ i ] . trim_blanks ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( Filters [ i ] . empty ( ) )   
					 
					 
					 
					        if  ( Filters [ i ] . empty ( ) )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -1712,7 +1712,7 @@ bool ImGuiTextFilter::PassFilter(const char* val) const 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( val  = =  NULL )   
					 
					 
					 
					    if  ( val  = =  NULL )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        val  =  " " ;   
					 
					 
					 
					        val  =  " " ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  Filters . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  Filters . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  TextRange &  f  =  Filters [ i ] ;   
					 
					 
					 
					        const  TextRange &  f  =  Filters [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( f . empty ( ) )   
					 
					 
					 
					        if  ( f . empty ( ) )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1754,11 +1754,11 @@ void ImGuiTextBuffer::appendv(const char* fmt, va_list args) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( len  < =  0 )   
					 
					 
					 
					    if  ( len  < =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        return ;   
					 
					 
					 
					        return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  write_off  =  Buf . size ( ) ;   
					 
					 
					 
					    const  int  write_off  =  Buf . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  needed_sz  =  write_off  +  len ;   
					 
					 
					 
					    const  int  needed_sz  =  write_off  +  len ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( write_off  +  len  > =  Buf . capacity ( ) )   
					 
					 
					 
					    if  ( write_off  +  len  > =  Buf . Capacity )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        int  double_capacity  =  Buf . capacity ( )   *  2 ;   
					 
					 
					 
					        int  double_capacity  =  Buf . Capacity   *  2 ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        Buf . reserve ( needed_sz  >  double_capacity  ?  needed_sz  :  double_capacity ) ;   
					 
					 
					 
					        Buf . reserve ( needed_sz  >  double_capacity  ?  needed_sz  :  double_capacity ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1886,14 +1886,14 @@ static inline void AddDrawListToRenderList(ImVector<ImDrawList*>& out_render_lis 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( draw_list - > commands . back ( ) . vtx_count  = =  0 )   
					 
					 
					 
					        if  ( draw_list - > commands . back ( ) . vtx_count  = =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            draw_list - > commands . pop_back ( ) ;   
					 
					 
					 
					            draw_list - > commands . pop_back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        out_render_list . push_back ( draw_list ) ;   
					 
					 
					 
					        out_render_list . push_back ( draw_list ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        GImGui - > IO . MetricsRenderVertices  + =  draw_list - > vtx_buffer . size ( ) ;   
					 
					 
					 
					        GImGui - > IO . MetricsRenderVertices  + =  draw_list - > vtx_buffer . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  AddWindowToRenderList ( ImVector < ImDrawList * > &  out_render_list ,  ImGuiWindow *  window )  
					 
					 
					 
					static  void  AddWindowToRenderList ( ImVector < ImDrawList * > &  out_render_list ,  ImGuiWindow *  window )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    AddDrawListToRenderList ( out_render_list ,  window - > DrawList ) ;   
					 
					 
					 
					    AddDrawListToRenderList ( out_render_list ,  window - > DrawList ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  window - > DC . ChildWindows . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  window - > DC . ChildWindows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGuiWindow *  child  =  window - > DC . ChildWindows [ i ] ;   
					 
					 
					 
					        ImGuiWindow *  child  =  window - > DC . ChildWindows [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ! child - > Active )  // clipped children may have been marked not active
   
					 
					 
					 
					        if  ( ! child - > Active )  // clipped children may have been marked not active
   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1922,7 +1922,7 @@ static ImGuiIniData* FindWindowSettings(const char* name) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiID  id  =  ImHash ( name ,  0 ) ;   
					 
					 
					 
					    ImGuiID  id  =  ImHash ( name ,  0 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  g . Settings . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  g . Settings . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGuiIniData *  ini  =  & g . Settings [ i ] ;   
					 
					 
					 
					        ImGuiIniData *  ini  =  & g . Settings [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ini - > ID  = =  id )   
					 
					 
					 
					        if  ( ini - > ID  = =  id )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -1933,7 +1933,7 @@ static ImGuiIniData* FindWindowSettings(const char* name) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  ImGuiIniData *  AddWindowSettings ( const  char *  name )  
					 
					 
					 
					static  ImGuiIniData *  AddWindowSettings ( const  char *  name )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    GImGui - > Settings . resize ( GImGui - > Settings . size ( )   +  1 ) ;   
					 
					 
					 
					    GImGui - > Settings . resize ( GImGui - > Settings . Size   +  1 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiIniData *  ini  =  & GImGui - > Settings . back ( ) ;   
					 
					 
					 
					    ImGuiIniData *  ini  =  & GImGui - > Settings . back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ini - > Name  =  ImStrdup ( name ) ;   
					 
					 
					 
					    ini - > Name  =  ImStrdup ( name ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ini - > ID  =  ImHash ( name ,  0 ) ;   
					 
					 
					 
					    ini - > ID  =  ImHash ( name ,  0 ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1999,7 +1999,7 @@ static void SaveSettings() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        return ;   
					 
					 
					 
					        return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Gather data from windows that were active during this session
   
					 
					 
					 
					    // Gather data from windows that were active during this session
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
					 
					 
					 
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( window - > Flags  &  ImGuiWindowFlags_NoSavedSettings )   
					 
					 
					 
					        if  ( window - > Flags  &  ImGuiWindowFlags_NoSavedSettings )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -2015,7 +2015,7 @@ static void SaveSettings() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    FILE *  f  =  fopen ( filename ,  " wt " ) ;   
					 
					 
					 
					    FILE *  f  =  fopen ( filename ,  " wt " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( ! f )   
					 
					 
					 
					    if  ( ! f )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        return ;   
					 
					 
					 
					        return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  g . Settings . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  g . Settings . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  ImGuiIniData *  settings  =  & g . Settings [ i ] ;   
					 
					 
					 
					        const  ImGuiIniData *  settings  =  & g . Settings [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( settings - > Pos . x  = =  FLT_MAX )   
					 
					 
					 
					        if  ( settings - > Pos . x  = =  FLT_MAX )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2083,7 +2083,7 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( g . IO . DeltaTime  >  0.0f ) ;   
					 
					 
					 
					    IM_ASSERT ( g . IO . DeltaTime  >  0.0f ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( g . IO . DisplaySize . x  > =  0.0f  & &  g . IO . DisplaySize . y  > =  0.0f ) ;   
					 
					 
					 
					    IM_ASSERT ( g . IO . DisplaySize . x  > =  0.0f  & &  g . IO . DisplaySize . y  > =  0.0f ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( g . IO . RenderDrawListsFn  ! =  NULL ) ;        // Must be implemented
   
					 
					 
					 
					    IM_ASSERT ( g . IO . RenderDrawListsFn  ! =  NULL ) ;        // Must be implemented
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( g . IO . Fonts - > Fonts . size ( )   >  0 ) ;          // Font Atlas not created. Did you call io.Fonts->GetTexDataAsRGBA32 / GetTexDataAsAlpha8 ?
   
					 
					 
					 
					    IM_ASSERT ( g . IO . Fonts - > Fonts . Size   >  0 ) ;          // Font Atlas not created. Did you call io.Fonts->GetTexDataAsRGBA32 / GetTexDataAsAlpha8 ?
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( g . IO . Fonts - > Fonts [ 0 ] - > IsLoaded ( ) ) ;      // Font Atlas not created. Did you call io.Fonts->GetTexDataAsRGBA32 / GetTexDataAsAlpha8 ?
   
					 
					 
					 
					    IM_ASSERT ( g . IO . Fonts - > Fonts [ 0 ] - > IsLoaded ( ) ) ;      // Font Atlas not created. Did you call io.Fonts->GetTexDataAsRGBA32 / GetTexDataAsAlpha8 ?
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( ! g . Initialized )   
					 
					 
					 
					    if  ( ! g . Initialized )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2246,7 +2246,7 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . FocusedWindow - > FocusIdxTabRequestNext  =  0 ;   
					 
					 
					 
					        g . FocusedWindow - > FocusIdxTabRequestNext  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Mark all windows as not visible
   
					 
					 
					 
					    // Mark all windows as not visible
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
					 
					 
					 
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        window - > WasActive  =  window - > Active ;   
					 
					 
					 
					        window - > WasActive  =  window - > Active ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2274,7 +2274,7 @@ void ImGui::Shutdown() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    SaveSettings ( ) ;   
					 
					 
					 
					    SaveSettings ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  g . Windows . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  g . Windows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . Windows [ i ] - > ~ ImGuiWindow ( ) ;   
					 
					 
					 
					        g . Windows [ i ] - > ~ ImGuiWindow ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : MemFree ( g . Windows [ i ] ) ;   
					 
					 
					 
					        ImGui : : MemFree ( g . Windows [ i ] ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -2285,7 +2285,7 @@ void ImGui::Shutdown() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . FocusedWindow  =  NULL ;   
					 
					 
					 
					    g . FocusedWindow  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . HoveredWindow  =  NULL ;   
					 
					 
					 
					    g . HoveredWindow  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . HoveredRootWindow  =  NULL ;   
					 
					 
					 
					    g . HoveredRootWindow  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  g . Settings . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  g . Settings . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : MemFree ( g . Settings [ i ] . Name ) ;   
					 
					 
					 
					        ImGui : : MemFree ( g . Settings [ i ] . Name ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . Settings . clear ( ) ;   
					 
					 
					 
					    g . Settings . clear ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    g . ColorModifiers . clear ( ) ;   
					 
					 
					 
					    g . ColorModifiers . clear ( ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2342,7 +2342,7 @@ static void AddWindowToSortedBuffer(ImVector<ImGuiWindow*>& out_sorted_windows, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    out_sorted_windows . push_back ( window ) ;   
					 
					 
					 
					    out_sorted_windows . push_back ( window ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( window - > Active )   
					 
					 
					 
					    if  ( window - > Active )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        int  count  =  window - > DC . ChildWindows . size ( ) ;   
					 
					 
					 
					        int  count  =  window - > DC . ChildWindows . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( count  >  1 )   
					 
					 
					 
					        if  ( count  >  1 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            qsort ( window - > DC . ChildWindows . begin ( ) ,  ( size_t ) count ,  sizeof ( ImGuiWindow * ) ,  ChildWindowComparer ) ;   
					 
					 
					 
					            qsort ( window - > DC . ChildWindows . begin ( ) ,  ( size_t ) count ,  sizeof ( ImGuiWindow * ) ,  ChildWindowComparer ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  count ;  i + + )   
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  count ;  i + + )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2391,7 +2391,7 @@ void ImGui::Render() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( first_render_of_the_frame )   
					 
					 
					 
					    if  ( first_render_of_the_frame )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Hide implicit "Debug" window if it hasn't been used
   
					 
					 
					 
					        // Hide implicit "Debug" window if it hasn't been used
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IM_ASSERT ( g . CurrentWindowStack . size ( )   = =  1 ) ;     // Mismatched Begin/End 
   
					 
					 
					 
					        IM_ASSERT ( g . CurrentWindowStack . Size   = =  1 ) ;     // Mismatched Begin/End 
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( g . CurrentWindow  & &  ! g . CurrentWindow - > Accessed )   
					 
					 
					 
					        if  ( g . CurrentWindow  & &  ! g . CurrentWindow - > Accessed )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . CurrentWindow - > Active  =  false ;   
					 
					 
					 
					            g . CurrentWindow - > Active  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : End ( ) ;   
					 
					 
					 
					        ImGui : : End ( ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2418,8 +2418,8 @@ void ImGui::Render() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Sort the window list so that all child windows are after their parent
   
					 
					 
					 
					        // Sort the window list so that all child windows are after their parent
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // We cannot do that on FocusWindow() because childs may not exist yet
   
					 
					 
					 
					        // We cannot do that on FocusWindow() because childs may not exist yet
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . WindowsSortBuffer . resize ( 0 ) ;   
					 
					 
					 
					        g . WindowsSortBuffer . resize ( 0 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . WindowsSortBuffer . reserve ( g . Windows . size ( ) ) ;   
					 
					 
					 
					        g . WindowsSortBuffer . reserve ( g . Windows . Size ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  0 ;  i  ! =  g . Windows . size ( ) ;  i + + )   
					 
					 
					 
					        for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGuiWindow *  window  =  g . Windows [ i ] ;   
					 
					 
					 
					            ImGuiWindow *  window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( window - > Flags  &  ImGuiWindowFlags_ChildWindow )        // if a child is active its parent will add it
   
					 
					 
					 
					            if  ( window - > Flags  &  ImGuiWindowFlags_ChildWindow )        // if a child is active its parent will add it
   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -2427,7 +2427,7 @@ void ImGui::Render() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    continue ;   
					 
					 
					 
					                    continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            AddWindowToSortedBuffer ( g . WindowsSortBuffer ,  window ) ;   
					 
					 
					 
					            AddWindowToSortedBuffer ( g . WindowsSortBuffer ,  window ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IM_ASSERT ( g . Windows . size ( )   = =  g . WindowsSortBuffer . size ( ) ) ;   // we done something wrong
   
					 
					 
					 
					        IM_ASSERT ( g . Windows . Size   = =  g . WindowsSortBuffer . Size ) ;   // we done something wrong
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        g . Windows . swap ( g . WindowsSortBuffer ) ;   
					 
					 
					 
					        g . Windows . swap ( g . WindowsSortBuffer ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Clear Input data for next frame
   
					 
					 
					 
					        // Clear Input data for next frame
   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -2452,7 +2452,7 @@ void ImGui::Render() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . IO . MetricsActiveWindows  =  0 ;   
					 
					 
					 
					        g . IO . MetricsActiveWindows  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( g . RenderDrawLists ) ;  i + + )   
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( g . RenderDrawLists ) ;  i + + )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . RenderDrawLists [ i ] . resize ( 0 ) ;   
					 
					 
					 
					            g . RenderDrawLists [ i ] . resize ( 0 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  0 ;  i  ! =  g . Windows . size ( ) ;  i + + )   
					 
					 
					 
					        for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGuiWindow *  window  =  g . Windows [ i ] ;   
					 
					 
					 
					            ImGuiWindow *  window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( window - > Active  & &  window - > HiddenFrames  < =  0  & &  ( window - > Flags  &  ( ImGuiWindowFlags_ChildWindow ) )  = =  0 )   
					 
					 
					 
					            if  ( window - > Active  & &  window - > HiddenFrames  < =  0  & &  ( window - > Flags  &  ( ImGuiWindowFlags_ChildWindow ) )  = =  0 )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -2469,18 +2469,18 @@ void ImGui::Render() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Flatten layers
   
					 
					 
					 
					        // Flatten layers
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        int  n  =  g . RenderDrawLists [ 0 ] . size ( ) ;   
					 
					 
					 
					        int  n  =  g . RenderDrawLists [ 0 ] . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        int  flattened_size  =  n ;   
					 
					 
					 
					        int  flattened_size  =  n ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  1 ;  i  <  IM_ARRAYSIZE ( g . RenderDrawLists ) ;  i + + )   
					 
					 
					 
					        for  ( int  i  =  1 ;  i  <  IM_ARRAYSIZE ( g . RenderDrawLists ) ;  i + + )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            flattened_size  + =  g . RenderDrawLists [ i ] . size ( ) ;   
					 
					 
					 
					            flattened_size  + =  g . RenderDrawLists [ i ] . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        g . RenderDrawLists [ 0 ] . resize ( flattened_size ) ;   
					 
					 
					 
					        g . RenderDrawLists [ 0 ] . resize ( flattened_size ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  1 ;  i  <  IM_ARRAYSIZE ( g . RenderDrawLists ) ;  i + + )   
					 
					 
					 
					        for  ( int  i  =  1 ;  i  <  IM_ARRAYSIZE ( g . RenderDrawLists ) ;  i + + )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImVector < ImDrawList * > &  layer  =  g . RenderDrawLists [ i ] ;   
					 
					 
					 
					            ImVector < ImDrawList * > &  layer  =  g . RenderDrawLists [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ! layer . empty ( ) )   
					 
					 
					 
					            if  ( ! layer . empty ( ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                memcpy ( & g . RenderDrawLists [ 0 ] [ n ] ,  & layer [ 0 ] ,  layer . size ( )   *  sizeof ( ImDrawList * ) ) ;   
					 
					 
					 
					                memcpy ( & g . RenderDrawLists [ 0 ] [ n ] ,  & layer [ 0 ] ,  layer . Size   *  sizeof ( ImDrawList * ) ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                n  + =  layer . size ( ) ;   
					 
					 
					 
					                n  + =  layer . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -2502,7 +2502,7 @@ void ImGui::Render() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Render
   
					 
					 
					 
					        // Render
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ! g . RenderDrawLists [ 0 ] . empty ( ) )   
					 
					 
					 
					        if  ( ! g . RenderDrawLists [ 0 ] . empty ( ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . IO . RenderDrawListsFn ( & g . RenderDrawLists [ 0 ] [ 0 ] ,  g . RenderDrawLists [ 0 ] . size ( ) ) ;   
					 
					 
					 
					            g . IO . RenderDrawListsFn ( & g . RenderDrawLists [ 0 ] [ 0 ] ,  g . RenderDrawLists [ 0 ] . Size ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2828,7 +2828,7 @@ void ImGui::CalcListClipping(int items_count, float items_height, int* out_items 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  ImGuiWindow *  FindHoveredWindow ( ImVec2  pos ,  bool  excluding_childs )  
					 
					 
					 
					static  ImGuiWindow *  FindHoveredWindow ( ImVec2  pos ,  bool  excluding_childs )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  g . Windows . size ( ) - 1 ;  i  > =  0 ;  i - - )   
					 
					 
					 
					    for  ( int  i  =  g . Windows . Size - 1 ;  i  > =  0 ;  i - - )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
					 
					 
					 
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ! window - > Active )   
					 
					 
					 
					        if  ( ! window - > Active )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3141,7 +3141,7 @@ void ImGui::EndTooltip() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  bool  IsPopupOpen ( ImGuiID  id )  
					 
					 
					 
					static  bool  IsPopupOpen ( ImGuiID  id )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  opened  =  g . OpenedPopupStack . size ( )   >  g . CurrentPopupStack . size ( )   & &  g . OpenedPopupStack [ g . CurrentPopupStack . size ( ) ] . PopupID  = =  id ;   
					 
					 
					 
					    const  bool  opened  =  g . OpenedPopupStack . Size   >  g . CurrentPopupStack . Size   & &  g . OpenedPopupStack [ g . CurrentPopupStack . Size ] . PopupID  = =  id ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    return  opened ;   
					 
					 
					 
					    return  opened ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3151,9 +3151,9 @@ void ImGui::OpenPopup(const char* str_id) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiWindow *  window  =  GetCurrentWindow ( ) ;   
					 
					 
					 
					    ImGuiWindow *  window  =  GetCurrentWindow ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiID  id  =  window - > GetID ( str_id ) ;   
					 
					 
					 
					    ImGuiID  id  =  window - > GetID ( str_id ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int  current_stack_size  =  g . CurrentPopupStack . size ( ) ;   
					 
					 
					 
					    int  current_stack_size  =  g . CurrentPopupStack . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiPopupRef  popup_ref  =  ImGuiPopupRef ( id ,  window ,  window - > GetID ( " ##menus " ) ) ;  // Tagged as new ref because constructor sets Window to NULL (we are passing the ParentWindow info here)
   
					 
					 
					 
					    ImGuiPopupRef  popup_ref  =  ImGuiPopupRef ( id ,  window ,  window - > GetID ( " ##menus " ) ) ;  // Tagged as new ref because constructor sets Window to NULL (we are passing the ParentWindow info here)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( g . OpenedPopupStack . size ( )   <  current_stack_size  +  1 )   
					 
					 
					 
					    if  ( g . OpenedPopupStack . Size   <  current_stack_size  +  1 )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        g . OpenedPopupStack . push_back ( popup_ref ) ;   
					 
					 
					 
					        g . OpenedPopupStack . push_back ( popup_ref ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    else  if  ( g . OpenedPopupStack [ current_stack_size ] . PopupID  ! =  id )   
					 
					 
					 
					    else  if  ( g . OpenedPopupStack [ current_stack_size ] . PopupID  ! =  id )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3173,7 +3173,7 @@ static void CloseInactivePopups() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int  n  =  0 ;   
					 
					 
					 
					    int  n  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( g . FocusedWindow )   
					 
					 
					 
					    if  ( g . FocusedWindow )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( n  =  0 ;  n  <  g . OpenedPopupStack . size ( ) ;  n + + )   
					 
					 
					 
					        for  ( n  =  0 ;  n  <  g . OpenedPopupStack . Size ;  n + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGuiPopupRef &  popup  =  g . OpenedPopupStack [ n ] ;   
					 
					 
					 
					            ImGuiPopupRef &  popup  =  g . OpenedPopupStack [ n ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ! popup . Window )   
					 
					 
					 
					            if  ( ! popup . Window )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3187,7 +3187,7 @@ static void CloseInactivePopups() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            else   
					 
					 
					 
					            else   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                bool  has_focus  =  false ;   
					 
					 
					 
					                bool  has_focus  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                for  ( int  m  =  n ;  m  <  g . OpenedPopupStack . size ( )   & &  ! has_focus ;  m + + )   
					 
					 
					 
					                for  ( int  m  =  n ;  m  <  g . OpenedPopupStack . Size   & &  ! has_focus ;  m + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    has_focus  =  ( g . OpenedPopupStack [ m ] . Window  & &  g . OpenedPopupStack [ m ] . Window - > RootWindow  = =  g . FocusedWindow - > RootWindow ) ;   
					 
					 
					 
					                    has_focus  =  ( g . OpenedPopupStack [ m ] . Window  & &  g . OpenedPopupStack [ m ] . Window - > RootWindow  = =  g . FocusedWindow - > RootWindow ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( ! has_focus )   
					 
					 
					 
					                if  ( ! has_focus )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    break ;   
					 
					 
					 
					                    break ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3222,15 +3222,15 @@ static void ClosePopup(ImGuiID id) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( ! IsPopupOpen ( id ) )   
					 
					 
					 
					    if  ( ! IsPopupOpen ( id ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        return ;   
					 
					 
					 
					        return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ClosePopupToLevel ( g . OpenedPopupStack . size ( )   -  1 ) ;   
					 
					 
					 
					    ClosePopupToLevel ( g . OpenedPopupStack . Size   -  1 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Close the popup we have begin-ed into.
  
					 
					 
					 
					// Close the popup we have begin-ed into.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void  ImGui : : CloseCurrentPopup ( )  
					 
					 
					 
					void  ImGui : : CloseCurrentPopup ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int  popup_idx  =  g . CurrentPopupStack . size ( )   -  1 ;   
					 
					 
					 
					    int  popup_idx  =  g . CurrentPopupStack . Size   -  1 ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( popup_idx  <  0  | |  popup_idx  >  g . OpenedPopupStack . size ( )   | |  g . CurrentPopupStack [ popup_idx ] . PopupID  ! =  g . OpenedPopupStack [ popup_idx ] . PopupID )   
					 
					 
					 
					    if  ( popup_idx  <  0  | |  popup_idx  >  g . OpenedPopupStack . Size   | |  g . CurrentPopupStack [ popup_idx ] . PopupID  ! =  g . OpenedPopupStack [ popup_idx ] . PopupID )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        return ;   
					 
					 
					 
					        return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    while  ( popup_idx  >  0  & &  g . OpenedPopupStack [ popup_idx ] . Window  & &  ( g . OpenedPopupStack [ popup_idx ] . Window - > Flags  &  ImGuiWindowFlags_ChildMenu ) )   
					 
					 
					 
					    while  ( popup_idx  >  0  & &  g . OpenedPopupStack [ popup_idx ] . Window  & &  ( g . OpenedPopupStack [ popup_idx ] . Window - > Flags  &  ImGuiWindowFlags_ChildMenu ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        popup_idx - - ;   
					 
					 
					 
					        popup_idx - - ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3259,7 +3259,7 @@ static bool BeginPopupEx(const char* str_id, ImGuiWindowFlags extra_flags) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    char  name [ 32 ] ;   
					 
					 
					 
					    char  name [ 32 ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( flags  &  ImGuiWindowFlags_ChildMenu )   
					 
					 
					 
					    if  ( flags  &  ImGuiWindowFlags_ChildMenu )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImFormatString ( name ,  20 ,  " ##menu_%d " ,  g . CurrentPopupStack . size ( ) ) ;     // Recycle windows based on depth
   
					 
					 
					 
					        ImFormatString ( name ,  20 ,  " ##menu_%d " ,  g . CurrentPopupStack . Size ) ;     // Recycle windows based on depth
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    else   
					 
					 
					 
					    else   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImFormatString ( name ,  20 ,  " ##popup_%08x " ,  id ) ;  // Not recycling, so we can close/open during the same frame
   
					 
					 
					 
					        ImFormatString ( name ,  20 ,  " ##popup_%08x " ,  id ) ;  // Not recycling, so we can close/open during the same frame
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    float  alpha  =  1.0f ;   
					 
					 
					 
					    float  alpha  =  1.0f ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3306,7 +3306,7 @@ void ImGui::EndPopup() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiWindow *  window  =  GetCurrentWindow ( ) ;   
					 
					 
					 
					    ImGuiWindow *  window  =  GetCurrentWindow ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( window - > Flags  &  ImGuiWindowFlags_Popup ) ;   
					 
					 
					 
					    IM_ASSERT ( window - > Flags  &  ImGuiWindowFlags_Popup ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( GImGui - > CurrentPopupStack . size ( )   >  0 ) ;   
					 
					 
					 
					    IM_ASSERT ( GImGui - > CurrentPopupStack . Size   >  0 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    ImGui : : End ( ) ;   
					 
					 
					 
					    ImGui : : End ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( ! ( window - > Flags  &  ImGuiWindowFlags_Modal ) )   
					 
					 
					 
					    if  ( ! ( window - > Flags  &  ImGuiWindowFlags_Modal ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : PopStyleVar ( ) ;   
					 
					 
					 
					        ImGui : : PopStyleVar ( ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3431,12 +3431,12 @@ static void CheckStacksSize(ImGuiWindow* window, bool write) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // NOT checking: DC.ItemWidth, DC.AllowKeyboardFocus, DC.ButtonRepeat, DC.TextWrapPos (per window) to allow user to conveniently push once and not pop (they are cleared on Begin)
   
					 
					 
					 
					    // NOT checking: DC.ItemWidth, DC.AllowKeyboardFocus, DC.ButtonRepeat, DC.TextWrapPos (per window) to allow user to conveniently push once and not pop (they are cleared on Begin)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int *  p_backup  =  & window - > DC . StackSizesBackup [ 0 ] ;   
					 
					 
					 
					    int *  p_backup  =  & window - > DC . StackSizesBackup [ 0 ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {  int  current  =  window - > IDStack . size ( ) ;        if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot PopID()
   
					 
					 
					 
					    {  int  current  =  window - > IDStack . Size ;        if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot PopID()
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    {  int  current  =  window - > DC . GroupStack . size ( ) ;  if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot EndGroup()
   
					 
					 
					 
					    {  int  current  =  window - > DC . GroupStack . Size ;  if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot EndGroup()
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    {  int  current  =  g . CurrentPopupStack . size ( ) ;    if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot EndPopup()/EndMenu()
   
					 
					 
					 
					    {  int  current  =  g . CurrentPopupStack . Size ;    if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot EndPopup()/EndMenu()
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    {  int  current  =  g . ColorModifiers . size ( ) ;       if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot PopStyleColor()
   
					 
					 
					 
					    {  int  current  =  g . ColorModifiers . Size ;       if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot PopStyleColor()
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    {  int  current  =  g . StyleModifiers . size ( ) ;       if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot PopStyleVar()
   
					 
					 
					 
					    {  int  current  =  g . StyleModifiers . Size ;       if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot PopStyleVar()
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    {  int  current  =  g . FontStack . size ( ) ;            if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot PopFont()
   
					 
					 
					 
					    {  int  current  =  g . FontStack . Size ;            if  ( write )  * p_backup  =  current ;  else  IM_ASSERT ( * p_backup  = =  current ) ;  p_backup + + ;  }     // User forgot PopFont()
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( p_backup  = =  window - > DC . StackSizesBackup  +  IM_ARRAYSIZE ( window - > DC . StackSizesBackup ) ) ;   
					 
					 
					 
					    IM_ASSERT ( p_backup  = =  window - > DC . StackSizesBackup  +  IM_ARRAYSIZE ( window - > DC . StackSizesBackup ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3476,7 +3476,7 @@ static ImGuiWindow* FindWindowByName(const char* name) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // FIXME-OPT: Store sorted hashes -> pointers.
   
					 
					 
					 
					    // FIXME-OPT: Store sorted hashes -> pointers.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
					 
					 
					 
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiID  id  =  ImHash ( name ,  0 ) ;   
					 
					 
					 
					    ImGuiID  id  =  ImHash ( name ,  0 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  g . Windows . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  g . Windows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( g . Windows [ i ] - > ID  = =  id )   
					 
					 
					 
					        if  ( g . Windows [ i ] - > ID  = =  id )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            return  g . Windows [ i ] ;   
					 
					 
					 
					            return  g . Windows [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  NULL ;   
					 
					 
					 
					    return  NULL ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3587,7 +3587,7 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool  window_was_visible  =  ( window - > LastFrameDrawn  = =  current_frame  -  1 ) ;    // Not using !WasActive because the implicit "Debug" window would always toggle off->on
   
					 
					 
					 
					    bool  window_was_visible  =  ( window - > LastFrameDrawn  = =  current_frame  -  1 ) ;    // Not using !WasActive because the implicit "Debug" window would always toggle off->on
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( flags  &  ImGuiWindowFlags_Popup )   
					 
					 
					 
					    if  ( flags  &  ImGuiWindowFlags_Popup )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGuiPopupRef &  popup_ref  =  g . OpenedPopupStack [ g . CurrentPopupStack . size ( ) ] ;   
					 
					 
					 
					        ImGuiPopupRef &  popup_ref  =  g . OpenedPopupStack [ g . CurrentPopupStack . Size ] ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        window_was_visible  & =  ( window - > PopupID  = =  popup_ref . PopupID ) ;   
					 
					 
					 
					        window_was_visible  & =  ( window - > PopupID  = =  popup_ref . PopupID ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        window_was_visible  & =  ( window  = =  popup_ref . Window ) ;   
					 
					 
					 
					        window_was_visible  & =  ( window  = =  popup_ref . Window ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        popup_ref . Window  =  window ;   
					 
					 
					 
					        popup_ref . Window  =  window ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3635,7 +3635,7 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Update known root window (if we are a child window, otherwise window == window->RootWindow)
   
					 
					 
					 
					    // Update known root window (if we are a child window, otherwise window == window->RootWindow)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int  root_idx ,  root_non_popup_idx ;   
					 
					 
					 
					    int  root_idx ,  root_non_popup_idx ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( root_idx  =  g . CurrentWindowStack . size ( )   -  1 ;  root_idx  >  0 ;  root_idx - - )   
					 
					 
					 
					    for  ( root_idx  =  g . CurrentWindowStack . Size   -  1 ;  root_idx  >  0 ;  root_idx - - )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ! ( g . CurrentWindowStack [ root_idx ] - > Flags  &  ImGuiWindowFlags_ChildWindow ) )   
					 
					 
					 
					        if  ( ! ( g . CurrentWindowStack [ root_idx ] - > Flags  &  ImGuiWindowFlags_ChildWindow ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            break ;   
					 
					 
					 
					            break ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( root_non_popup_idx  =  root_idx ;  root_non_popup_idx  >  0 ;  root_non_popup_idx - - )   
					 
					 
					 
					    for  ( root_non_popup_idx  =  root_idx ;  root_non_popup_idx  >  0 ;  root_non_popup_idx - - )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -4216,7 +4216,7 @@ static void FocusWindow(ImGuiWindow* window) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( g . Windows . back ( )  = =  window )   
					 
					 
					 
					    if  ( g . Windows . back ( )  = =  window )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        return ;   
					 
					 
					 
					        return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  g . Windows . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  g . Windows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( g . Windows [ i ]  = =  window )   
					 
					 
					 
					        if  ( g . Windows [ i ]  = =  window )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            g . Windows . erase ( g . Windows . begin ( )  +  i ) ;   
					 
					 
					 
					            g . Windows . erase ( g . Windows . begin ( )  +  i ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -6843,7 +6843,7 @@ static int     STB_TEXTEDIT_KEYTOTEXT(int key) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  ImWchar  STB_TEXTEDIT_NEWLINE  =  ' \n ' ;  
					 
					 
					 
					static  ImWchar  STB_TEXTEDIT_NEWLINE  =  ' \n ' ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void     STB_TEXTEDIT_LAYOUTROW ( StbTexteditRow *  r ,  STB_TEXTEDIT_STRING *  obj ,  int  line_start_idx )  
					 
					 
					 
					static  void     STB_TEXTEDIT_LAYOUTROW ( StbTexteditRow *  r ,  STB_TEXTEDIT_STRING *  obj ,  int  line_start_idx )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  ImWchar *  text  =  obj - > Text . begin ( ) ;   
					 
					 
					 
					    const  ImWchar *  text  =  obj - > Text . Data ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    const  ImWchar *  text_remaining  =  NULL ;   
					 
					 
					 
					    const  ImWchar *  text_remaining  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  ImVec2  size  =  InputTextCalcTextSizeW ( text  +  line_start_idx ,  text  +  obj - > CurLenW ,  & text_remaining ,  NULL ,  true ) ;   
					 
					 
					 
					    const  ImVec2  size  =  InputTextCalcTextSizeW ( text  +  line_start_idx ,  text  +  obj - > CurLenW ,  & text_remaining ,  NULL ,  true ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    r - > x0  =  0.0f ;   
					 
					 
					 
					    r - > x0  =  0.0f ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -6858,14 +6858,14 @@ static bool is_separator(unsigned int c) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define STB_TEXTEDIT_IS_SPACE(CH)                                                                 ( ImCharIsSpace((unsigned int)CH) || is_separator((unsigned int)CH) )  
					 
					 
					 
					# define STB_TEXTEDIT_IS_SPACE(CH)                                                                 ( ImCharIsSpace((unsigned int)CH) || is_separator((unsigned int)CH) )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  STB_TEXTEDIT_DELETECHARS ( STB_TEXTEDIT_STRING *  obj ,  int  pos ,  int  n )  
					 
					 
					 
					static  void  STB_TEXTEDIT_DELETECHARS ( STB_TEXTEDIT_STRING *  obj ,  int  pos ,  int  n )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImWchar *  dst  =  obj - > Text . begin ( )   +  pos ;   
					 
					 
					 
					    ImWchar *  dst  =  obj - > Text . Data   +  pos ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // We maintain our buffer length in both UTF-8 and wchar formats
   
					 
					 
					 
					    // We maintain our buffer length in both UTF-8 and wchar formats
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    obj - > CurLenA  - =  ImTextCountUtf8BytesFromStr ( dst ,  dst  +  n ) ;   
					 
					 
					 
					    obj - > CurLenA  - =  ImTextCountUtf8BytesFromStr ( dst ,  dst  +  n ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    obj - > CurLenW  - =  n ;   
					 
					 
					 
					    obj - > CurLenW  - =  n ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Offset remaining text
   
					 
					 
					 
					    // Offset remaining text
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  ImWchar *  src  =  obj - > Text . begin ( )   +  pos  +  n ;  
  
					 
					 
					 
					    const  ImWchar *  src  =  obj - > Text . Data   +  pos  +  n ;  
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    while  ( ImWchar  c  =  * src + + )   
					 
					 
					 
					    while  ( ImWchar  c  =  * src + + )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        * dst + +  =  c ;  
  
					 
					 
					 
					        * dst + +  =  c ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    * dst  =  ' \0 ' ;   
					 
					 
					 
					    * dst  =  ' \0 ' ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -6874,14 +6874,14 @@ static void STB_TEXTEDIT_DELETECHARS(STB_TEXTEDIT_STRING* obj, int pos, int n) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  bool  STB_TEXTEDIT_INSERTCHARS ( STB_TEXTEDIT_STRING *  obj ,  int  pos ,  const  ImWchar *  new_text ,  int  new_text_len )  
					 
					 
					 
					static  bool  STB_TEXTEDIT_INSERTCHARS ( STB_TEXTEDIT_STRING *  obj ,  int  pos ,  const  ImWchar *  new_text ,  int  new_text_len )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  text_len  =  obj - > CurLenW ;   
					 
					 
					 
					    const  int  text_len  =  obj - > CurLenW ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( new_text_len  +  text_len  +  1  >  obj - > Text . size ( ) )   
					 
					 
					 
					    if  ( new_text_len  +  text_len  +  1  >  obj - > Text . Size )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        return  false ;   
					 
					 
					 
					        return  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  new_text_len_utf8  =  ImTextCountUtf8BytesFromStr ( new_text ,  new_text  +  new_text_len ) ;   
					 
					 
					 
					    const  int  new_text_len_utf8  =  ImTextCountUtf8BytesFromStr ( new_text ,  new_text  +  new_text_len ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( new_text_len_utf8  +  obj - > CurLenA  +  1  >  obj - > BufSizeA )   
					 
					 
					 
					    if  ( new_text_len_utf8  +  obj - > CurLenA  +  1  >  obj - > BufSizeA )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        return  false ;   
					 
					 
					 
					        return  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImWchar *  text  =  obj - > Text . begin ( ) ;   
					 
					 
					 
					    ImWchar *  text  =  obj - > Text . Data ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( pos  ! =  text_len )   
					 
					 
					 
					    if  ( pos  ! =  text_len )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        memmove ( text  +  pos  +  new_text_len ,  text  +  pos ,  ( size_t ) ( text_len  -  pos )  *  sizeof ( ImWchar ) ) ;   
					 
					 
					 
					        memmove ( text  +  pos  +  new_text_len ,  text  +  pos ,  ( size_t ) ( text_len  -  pos )  *  sizeof ( ImWchar ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    memcpy ( text  +  pos ,  new_text ,  ( size_t ) new_text_len  *  sizeof ( ImWchar ) ) ;   
					 
					 
					 
					    memcpy ( text  +  pos ,  new_text ,  ( size_t ) new_text_len  *  sizeof ( ImWchar ) ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -7095,9 +7095,9 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // From the moment we focused we are ignoring the content of 'buf'
   
					 
					 
					 
					            // From the moment we focused we are ignoring the content of 'buf'
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            edit_state . Text . resize ( buf_size ) ;         // wchar count <= utf-8 count
   
					 
					 
					 
					            edit_state . Text . resize ( buf_size ) ;         // wchar count <= utf-8 count
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            edit_state . InitialText . resize ( buf_size ) ;  // utf-8
   
					 
					 
					 
					            edit_state . InitialText . resize ( buf_size ) ;  // utf-8
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImFormatString ( edit_state . InitialText . begin ( ) ,  edit_state . InitialText . size ( ) ,  " %s " ,  buf ) ;   
					 
					 
					 
					            ImFormatString ( edit_state . InitialText . Data ,  edit_state . InitialText . Size ,  " %s " ,  buf ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            const  char *  buf_end  =  NULL ;   
					 
					 
					 
					            const  char *  buf_end  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            edit_state . CurLenW  =  ImTextStrFromUtf8 ( edit_state . Text . begin ( ) ,  edit_state . Text . size ( ) ,  buf ,  NULL ,  & buf_end ) ;   
					 
					 
					 
					            edit_state . CurLenW  =  ImTextStrFromUtf8 ( edit_state . Text . Data ,  edit_state . Text . Size ,  buf ,  NULL ,  & buf_end ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            edit_state . CurLenA  =  ( int ) ( buf_end  -  buf ) ;  // We can't get the result from ImFormatString() above because it is not UTF-8 aware. Here we'll cut off malformed UTF-8.
   
					 
					 
					 
					            edit_state . CurLenA  =  ( int ) ( buf_end  -  buf ) ;  // We can't get the result from ImFormatString() above because it is not UTF-8 aware. Here we'll cut off malformed UTF-8.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            edit_state . InputCursorScreenPos  =  ImVec2 ( - 1.f ,  - 1.f ) ;   
					 
					 
					 
					            edit_state . InputCursorScreenPos  =  ImVec2 ( - 1.f ,  - 1.f ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            edit_state . CursorAnimReset ( ) ;   
					 
					 
					 
					            edit_state . CursorAnimReset ( ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -7230,8 +7230,8 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                const  int  ib  =  edit_state . HasSelection ( )  ?  ImMin ( edit_state . StbState . select_start ,  edit_state . StbState . select_end )  :  0 ;   
					 
					 
					 
					                const  int  ib  =  edit_state . HasSelection ( )  ?  ImMin ( edit_state . StbState . select_start ,  edit_state . StbState . select_end )  :  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                const  int  ie  =  edit_state . HasSelection ( )  ?  ImMax ( edit_state . StbState . select_start ,  edit_state . StbState . select_end )  :  edit_state . CurLenW ;   
					 
					 
					 
					                const  int  ie  =  edit_state . HasSelection ( )  ?  ImMax ( edit_state . StbState . select_start ,  edit_state . StbState . select_end )  :  edit_state . CurLenW ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                edit_state . TempTextBuffer . resize ( ( ie - ib )  *  4  +  1 ) ;   
					 
					 
					 
					                edit_state . TempTextBuffer . resize ( ( ie - ib )  *  4  +  1 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImTextStrToUtf8 ( edit_state . TempTextBuffer . begin ( ) ,  edit_state . TempTextBuffer . size ( ) ,  edit_state . Text . begin ( ) + ib ,  edit_state . Text . begin ( ) + ie ) ;   
					 
					 
					 
					                ImTextStrToUtf8 ( edit_state . TempTextBuffer . Data ,  edit_state . TempTextBuffer . Size ,  edit_state . Text . Data + ib ,  edit_state . Text . Data + ie ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                g . IO . SetClipboardTextFn ( edit_state . TempTextBuffer . begin ( ) ) ;   
					 
					 
					 
					                g . IO . SetClipboardTextFn ( edit_state . TempTextBuffer . Data ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( cut )   
					 
					 
					 
					            if  ( cut )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -7275,7 +7275,7 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( cancel_edit )   
					 
					 
					 
					        if  ( cancel_edit )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // Restore initial value
   
					 
					 
					 
					            // Restore initial value
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImFormatString ( buf ,  buf_size ,  " %s " ,  edit_state . InitialText . begin ( ) ) ;   
					 
					 
					 
					            ImFormatString ( buf ,  buf_size ,  " %s " ,  edit_state . InitialText . Data ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            value_changed  =  true ;   
					 
					 
					 
					            value_changed  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else   
					 
					 
					 
					        else   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -7284,8 +7284,8 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // Note that as soon as we can focus into the input box, the in-widget value gets priority over any underlying modification of the input buffer
   
					 
					 
					 
					            // Note that as soon as we can focus into the input box, the in-widget value gets priority over any underlying modification of the input buffer
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // FIXME: We actually always render 'buf' in RenderTextScrolledClipped
   
					 
					 
					 
					            // FIXME: We actually always render 'buf' in RenderTextScrolledClipped
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // FIXME-OPT: CPU waste to do this every time the widget is active, should mark dirty state from the stb_textedit callbacks
   
					 
					 
					 
					            // FIXME-OPT: CPU waste to do this every time the widget is active, should mark dirty state from the stb_textedit callbacks
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            edit_state . TempTextBuffer . resize ( edit_state . Text . size ( )   *  4 ) ;   
					 
					 
					 
					            edit_state . TempTextBuffer . resize ( edit_state . Text . Size   *  4 ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImTextStrToUtf8 ( edit_state . TempTextBuffer . begin ( ) ,  edit_state . TempTextBuffer . size ( ) ,  edit_state . Text . begin ( ) ,  NULL ) ;   
					 
					 
					 
					            ImTextStrToUtf8 ( edit_state . TempTextBuffer . Data ,  edit_state . TempTextBuffer . Size ,  edit_state . Text . Data ,  NULL ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // User callback
   
					 
					 
					 
					            // User callback
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ( flags  &  ( ImGuiInputTextFlags_CallbackCompletion  |  ImGuiInputTextFlags_CallbackHistory  |  ImGuiInputTextFlags_CallbackAlways ) )  ! =  0 )   
					 
					 
					 
					            if  ( ( flags  &  ( ImGuiInputTextFlags_CallbackCompletion  |  ImGuiInputTextFlags_CallbackHistory  |  ImGuiInputTextFlags_CallbackAlways ) )  ! =  0 )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -7316,14 +7316,14 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    ImGuiTextEditCallbackData  callback_data ;   
					 
					 
					 
					                    ImGuiTextEditCallbackData  callback_data ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    callback_data . EventFlag  =  event_flag ;  
  
					 
					 
					 
					                    callback_data . EventFlag  =  event_flag ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    callback_data . EventKey  =  event_key ;   
					 
					 
					 
					                    callback_data . EventKey  =  event_key ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    callback_data . Buf  =  edit_state . TempTextBuffer . begin ( ) ;   
					 
					 
					 
					                    callback_data . Buf  =  edit_state . TempTextBuffer . Data ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    callback_data . BufSize  =  edit_state . BufSizeA ;   
					 
					 
					 
					                    callback_data . BufSize  =  edit_state . BufSizeA ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    callback_data . BufDirty  =  false ;   
					 
					 
					 
					                    callback_data . BufDirty  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    callback_data . Flags  =  flags ;   
					 
					 
					 
					                    callback_data . Flags  =  flags ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    callback_data . UserData  =  user_data ;   
					 
					 
					 
					                    callback_data . UserData  =  user_data ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    // We have to convert from position from wchar to UTF-8 positions
   
					 
					 
					 
					                    // We have to convert from position from wchar to UTF-8 positions
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    ImWchar *  text  =  edit_state . Text . begin ( ) ;   
					 
					 
					 
					                    ImWchar *  text  =  edit_state . Text . Data ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    const  int  utf8_cursor_pos  =  callback_data . CursorPos  =  ImTextCountUtf8BytesFromStr ( text ,  text  +  edit_state . StbState . cursor ) ;   
					 
					 
					 
					                    const  int  utf8_cursor_pos  =  callback_data . CursorPos  =  ImTextCountUtf8BytesFromStr ( text ,  text  +  edit_state . StbState . cursor ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    const  int  utf8_selection_start  =  callback_data . SelectionStart  =  ImTextCountUtf8BytesFromStr ( text ,  text  +  edit_state . StbState . select_start ) ;   
					 
					 
					 
					                    const  int  utf8_selection_start  =  callback_data . SelectionStart  =  ImTextCountUtf8BytesFromStr ( text ,  text  +  edit_state . StbState . select_start ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    const  int  utf8_selection_end  =  callback_data . SelectionEnd  =  ImTextCountUtf8BytesFromStr ( text ,  text  +  edit_state . StbState . select_end ) ;   
					 
					 
					 
					                    const  int  utf8_selection_end  =  callback_data . SelectionEnd  =  ImTextCountUtf8BytesFromStr ( text ,  text  +  edit_state . StbState . select_end ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -7332,7 +7332,7 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    callback ( & callback_data ) ;   
					 
					 
					 
					                    callback ( & callback_data ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    // Read back what user may have modified
   
					 
					 
					 
					                    // Read back what user may have modified
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    IM_ASSERT ( callback_data . Buf  = =  edit_state . TempTextBuffer . begin ( ) ) ;   // Invalid to modify those fields
   
					 
					 
					 
					                    IM_ASSERT ( callback_data . Buf  = =  edit_state . TempTextBuffer . Data ) ;   // Invalid to modify those fields
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    IM_ASSERT ( callback_data . BufSize  = =  edit_state . BufSizeA ) ;   
					 
					 
					 
					                    IM_ASSERT ( callback_data . BufSize  = =  edit_state . BufSizeA ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    IM_ASSERT ( callback_data . Flags  = =  flags ) ;   
					 
					 
					 
					                    IM_ASSERT ( callback_data . Flags  = =  flags ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    if  ( callback_data . CursorPos  ! =  utf8_cursor_pos )             edit_state . StbState . cursor  =  ImTextCountCharsFromUtf8 ( callback_data . Buf ,  callback_data . Buf  +  callback_data . CursorPos ) ;   
					 
					 
					 
					                    if  ( callback_data . CursorPos  ! =  utf8_cursor_pos )             edit_state . StbState . cursor  =  ImTextCountCharsFromUtf8 ( callback_data . Buf ,  callback_data . Buf  +  callback_data . CursorPos ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -7340,16 +7340,16 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    if  ( callback_data . SelectionEnd  ! =  utf8_selection_end )       edit_state . StbState . select_end  =  ImTextCountCharsFromUtf8 ( callback_data . Buf ,  callback_data . Buf  +  callback_data . SelectionEnd ) ;   
					 
					 
					 
					                    if  ( callback_data . SelectionEnd  ! =  utf8_selection_end )       edit_state . StbState . select_end  =  ImTextCountCharsFromUtf8 ( callback_data . Buf ,  callback_data . Buf  +  callback_data . SelectionEnd ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    if  ( callback_data . BufDirty )   
					 
					 
					 
					                    if  ( callback_data . BufDirty )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    {   
					 
					 
					 
					                    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        edit_state . CurLenW  =  ImTextStrFromUtf8 ( text ,  edit_state . Text . size ( ) ,  edit_state . TempTextBuffer . begin ( ) ,  NULL ) ;   
					 
					 
					 
					                        edit_state . CurLenW  =  ImTextStrFromUtf8 ( text ,  edit_state . Text . Size ,  edit_state . TempTextBuffer . Data ,  NULL ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                        edit_state . CurLenA  =  ( int ) strlen ( edit_state . TempTextBuffer . begin ( ) ) ;   
					 
					 
					 
					                        edit_state . CurLenA  =  ( int ) strlen ( edit_state . TempTextBuffer . Data ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                        edit_state . CursorAnimReset ( ) ;   
					 
					 
					 
					                        edit_state . CursorAnimReset ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    }   
					 
					 
					 
					                    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                }   
					 
					 
					 
					                }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( strcmp ( edit_state . TempTextBuffer . begin ( ) ,  buf )  ! =  0 )   
					 
					 
					 
					            if  ( strcmp ( edit_state . TempTextBuffer . Data ,  buf )  ! =  0 )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImFormatString ( buf ,  buf_size ,  " %s " ,  edit_state . TempTextBuffer . begin ( ) ) ;   
					 
					 
					 
					                ImFormatString ( buf ,  buf_size ,  " %s " ,  edit_state . TempTextBuffer . Data ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                value_changed  =  true ;   
					 
					 
					 
					                value_changed  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -7371,7 +7371,7 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // - Handle scrolling, highlight selection, display cursor (those all requires some form of 1d->2d cursor position calculation)
   
					 
					 
					 
					        // - Handle scrolling, highlight selection, display cursor (those all requires some form of 1d->2d cursor position calculation)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // - Measure text height (for scrollbar)
   
					 
					 
					 
					        // - Measure text height (for scrollbar)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // We are attempting to do most of that in one main pass to minimize the computation cost (non-negligible for large amount of text) + 2nd pass for selection rendering (we could merge them by an extra refactoring effort)
   
					 
					 
					 
					        // We are attempting to do most of that in one main pass to minimize the computation cost (non-negligible for large amount of text) + 2nd pass for selection rendering (we could merge them by an extra refactoring effort)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  ImWchar *  text_begin  =  edit_state . Text . begin ( ) ;   
					 
					 
					 
					        const  ImWchar *  text_begin  =  edit_state . Text . Data ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        const  ImWchar *  text_end  =  text_begin  +  edit_state . CurLenW ;   
					 
					 
					 
					        const  ImWchar *  text_end  =  text_begin  +  edit_state . CurLenW ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImVec2  cursor_offset ,  select_start_offset ;   
					 
					 
					 
					        ImVec2  cursor_offset ,  select_start_offset ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -8130,7 +8130,7 @@ bool ImGui::BeginMenu(const char* label, bool enabled) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool  pressed ;   
					 
					 
					 
					    bool  pressed ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool  opened  =  IsPopupOpen ( id ) ;   
					 
					 
					 
					    bool  opened  =  IsPopupOpen ( id ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool  menuset_opened  =  ! ( window - > Flags  &  ImGuiWindowFlags_Popup )  & &  ( g . OpenedPopupStack . size ( )   >  g . CurrentPopupStack . size ( )   & &  g . OpenedPopupStack [ g . CurrentPopupStack . size ( ) ] . ParentMenuSet  = =  window - > GetID ( " ##menus " ) ) ;   
					 
					 
					 
					    bool  menuset_opened  =  ! ( window - > Flags  &  ImGuiWindowFlags_Popup )  & &  ( g . OpenedPopupStack . Size   >  g . CurrentPopupStack . Size   & &  g . OpenedPopupStack [ g . CurrentPopupStack . Size ] . ParentMenuSet  = =  window - > GetID ( " ##menus " ) ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( menuset_opened )   
					 
					 
					 
					    if  ( menuset_opened )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . FocusedWindow  =  window ;   
					 
					 
					 
					        g . FocusedWindow  =  window ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -8166,9 +8166,9 @@ bool ImGui::BeginMenu(const char* label, bool enabled) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Implement http://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown to avoid using timers so menus feel more reactive.
   
					 
					 
					 
					        // Implement http://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown to avoid using timers so menus feel more reactive.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        bool  moving_within_opened_triangle  =  false ;   
					 
					 
					 
					        bool  moving_within_opened_triangle  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( g . HoveredWindow  = =  window  & &  g . OpenedPopupStack . size ( )   >  g . CurrentPopupStack . size ( )   & &  g . OpenedPopupStack [ g . CurrentPopupStack . size ( ) ] . ParentWindow  = =  window )   
					 
					 
					 
					        if  ( g . HoveredWindow  = =  window  & &  g . OpenedPopupStack . Size   >  g . CurrentPopupStack . Size   & &  g . OpenedPopupStack [ g . CurrentPopupStack . Size ] . ParentWindow  = =  window )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ImGuiWindow *  next_window  =  g . OpenedPopupStack [ g . CurrentPopupStack . size ( ) ] . Window )   
					 
					 
					 
					            if  ( ImGuiWindow *  next_window  =  g . OpenedPopupStack [ g . CurrentPopupStack . Size ] . Window )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImRect  next_window_rect  =  next_window - > Rect ( ) ;   
					 
					 
					 
					                ImRect  next_window_rect  =  next_window - > Rect ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImVec2  ta  =  g . IO . MousePos  -  g . IO . MouseDelta ;   
					 
					 
					 
					                ImVec2  ta  =  g . IO . MousePos  -  g . IO . MouseDelta ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -8195,9 +8195,9 @@ bool ImGui::BeginMenu(const char* label, bool enabled) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        want_open  =  true ;   
					 
					 
					 
					        want_open  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( want_close  & &  IsPopupOpen ( id ) )   
					 
					 
					 
					    if  ( want_close  & &  IsPopupOpen ( id ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ClosePopupToLevel ( GImGui - > CurrentPopupStack . size ( ) ) ;   
					 
					 
					 
					        ClosePopupToLevel ( GImGui - > CurrentPopupStack . Size ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( ! opened  & &  want_open  & &  g . OpenedPopupStack . size ( )   >  g . CurrentPopupStack . size ( ) )   
					 
					 
					 
					    if  ( ! opened  & &  want_open  & &  g . OpenedPopupStack . Size   >  g . CurrentPopupStack . Size )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Don't recycle same menu level in the same frame, first close the other menu and yield for a frame.
   
					 
					 
					 
					        // Don't recycle same menu level in the same frame, first close the other menu and yield for a frame.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : OpenPopup ( label ) ;   
					 
					 
					 
					        ImGui : : OpenPopup ( label ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -8549,7 +8549,7 @@ void ImGui::BeginGroup() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiWindow *  window  =  GetCurrentWindow ( ) ;   
					 
					 
					 
					    ImGuiWindow *  window  =  GetCurrentWindow ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    window - > DC . GroupStack . resize ( window - > DC . GroupStack . size ( )   +  1 ) ;   
					 
					 
					 
					    window - > DC . GroupStack . resize ( window - > DC . GroupStack . Size   +  1 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiGroupData &  group_data  =  window - > DC . GroupStack . back ( ) ;   
					 
					 
					 
					    ImGuiGroupData &  group_data  =  window - > DC . GroupStack . back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    group_data . BackupCursorPos  =  window - > DC . CursorPos ;   
					 
					 
					 
					    group_data . BackupCursorPos  =  window - > DC . CursorPos ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    group_data . BackupCursorMaxPos  =  window - > DC . CursorMaxPos ;   
					 
					 
					 
					    group_data . BackupCursorMaxPos  =  window - > DC . CursorMaxPos ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -8703,7 +8703,7 @@ float ImGui::GetColumnOffset(int column_index) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Read from cache
   
					 
					 
					 
					    // Read from cache
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( column_index  <  window - > DC . ColumnsOffsetsT . size ( ) ) ;   
					 
					 
					 
					    IM_ASSERT ( column_index  <  window - > DC . ColumnsOffsetsT . Size ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    const  float  t  =  window - > DC . ColumnsOffsetsT [ column_index ] ;   
					 
					 
					 
					    const  float  t  =  window - > DC . ColumnsOffsetsT [ column_index ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  float  min_x  =  window - > DC . ColumnsStartX ;   
					 
					 
					 
					    const  float  min_x  =  window - > DC . ColumnsStartX ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -8719,7 +8719,7 @@ void ImGui::SetColumnOffset(int column_index, float offset) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( column_index  <  0 )   
					 
					 
					 
					    if  ( column_index  <  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        column_index  =  window - > DC . ColumnsCurrent ;   
					 
					 
					 
					        column_index  =  window - > DC . ColumnsCurrent ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( column_index  <  window - > DC . ColumnsOffsetsT . size ( ) ) ;   
					 
					 
					 
					    IM_ASSERT ( column_index  <  window - > DC . ColumnsOffsetsT . Size ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    const  ImGuiID  column_id  =  window - > DC . ColumnsSetID  +  ImGuiID ( column_index ) ;   
					 
					 
					 
					    const  ImGuiID  column_id  =  window - > DC . ColumnsSetID  +  ImGuiID ( column_index ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  float  min_x  =  window - > DC . ColumnsStartX ;   
					 
					 
					 
					    const  float  min_x  =  window - > DC . ColumnsStartX ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -8990,7 +8990,7 @@ void ImDrawList::UpdateClipRect() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    else   
					 
					 
					 
					    else   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImVec4  current_clip_rect  =  clip_rect_stack . empty ( )  ?  GNullClipRect  :  clip_rect_stack . back ( ) ;   
					 
					 
					 
					        ImVec4  current_clip_rect  =  clip_rect_stack . empty ( )  ?  GNullClipRect  :  clip_rect_stack . back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( commands . size ( )   >  2  & &  ImLengthSqr ( commands [ commands . size ( ) - 2 ] . clip_rect  -  current_clip_rect )  <  0.00001f )   
					 
					 
					 
					        if  ( commands . Size   >  2  & &  ImLengthSqr ( commands [ commands . Size - 2 ] . clip_rect  -  current_clip_rect )  <  0.00001f )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            commands . pop_back ( ) ;   
					 
					 
					 
					            commands . pop_back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else   
					 
					 
					 
					        else   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            current_cmd - > clip_rect  =  current_clip_rect ;   
					 
					 
					 
					            current_cmd - > clip_rect  =  current_clip_rect ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9015,7 +9015,7 @@ void ImDrawList::PushClipRectFullScreen() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void  ImDrawList : : PopClipRect ( )  
					 
					 
					 
					void  ImDrawList : : PopClipRect ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( clip_rect_stack . size ( )   >  0 ) ;   
					 
					 
					 
					    IM_ASSERT ( clip_rect_stack . Size   >  0 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    clip_rect_stack . pop_back ( ) ;   
					 
					 
					 
					    clip_rect_stack . pop_back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    UpdateClipRect ( ) ;   
					 
					 
					 
					    UpdateClipRect ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -9042,7 +9042,7 @@ void ImDrawList::PushTextureID(const ImTextureID& texture_id) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void  ImDrawList : : PopTextureID ( )  
					 
					 
					 
					void  ImDrawList : : PopTextureID ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( texture_id_stack . size ( )   >  0 ) ;   
					 
					 
					 
					    IM_ASSERT ( texture_id_stack . Size   >  0 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    texture_id_stack . pop_back ( ) ;   
					 
					 
					 
					    texture_id_stack . pop_back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    UpdateTextureID ( ) ;   
					 
					 
					 
					    UpdateTextureID ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9052,9 +9052,9 @@ void ImDrawList::PrimReserve(unsigned int vtx_count) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImDrawCmd &  draw_cmd  =  commands . back ( ) ;   
					 
					 
					 
					    ImDrawCmd &  draw_cmd  =  commands . back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    draw_cmd . vtx_count  + =  vtx_count ;   
					 
					 
					 
					    draw_cmd . vtx_count  + =  vtx_count ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int  vtx_buffer_size  =  vtx_buffer . size ( ) ;   
					 
					 
					 
					    int  vtx_buffer_size  =  vtx_buffer . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    vtx_buffer . resize ( vtx_buffer_size  +  vtx_count ) ;   
					 
					 
					 
					    vtx_buffer . resize ( vtx_buffer_size  +  vtx_count ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    vtx_write  =  vtx_buffer . begin ( )   +  vtx_buffer_size ;   
					 
					 
					 
					    vtx_write  =  vtx_buffer . Data   +  vtx_buffer_size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void  ImDrawList : : PrimTriangle ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  c ,  ImU32  col )  
					 
					 
					 
					void  ImDrawList : : PrimTriangle ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  c ,  ImU32  col )  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -9298,7 +9298,7 @@ void ImDrawList::AddText(const ImFont* font, float font_size, const ImVec2& pos, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // reserve vertices for worse case
   
					 
					 
					 
					    // reserve vertices for worse case
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  unsigned  int  char_count  =  ( unsigned  int ) ( text_end  -  text_begin ) ;   
					 
					 
					 
					    const  unsigned  int  char_count  =  ( unsigned  int ) ( text_end  -  text_begin ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  unsigned  int  vtx_count_max  =  char_count  *  6 ;   
					 
					 
					 
					    const  unsigned  int  vtx_count_max  =  char_count  *  6 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  vtx_begin  =  vtx_buffer . size ( ) ;   
					 
					 
					 
					    const  int  vtx_begin  =  vtx_buffer . Size ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    PrimReserve ( vtx_count_max ) ;   
					 
					 
					 
					    PrimReserve ( vtx_count_max ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec4  clip_rect  =  clip_rect_stack . back ( ) ;   
					 
					 
					 
					    ImVec4  clip_rect  =  clip_rect_stack . back ( ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9313,7 +9313,7 @@ void ImDrawList::AddText(const ImFont* font, float font_size, const ImVec2& pos, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // give back unused vertices
   
					 
					 
					 
					    // give back unused vertices
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    vtx_buffer . resize ( ( int ) ( vtx_write  -  & vtx_buffer . front ( ) ) ) ;   
					 
					 
					 
					    vtx_buffer . resize ( ( int ) ( vtx_write  -  & vtx_buffer . front ( ) ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  vtx_count  =  vtx_buffer . size ( )   -  vtx_begin ;   
					 
					 
					 
					    const  int  vtx_count  =  vtx_buffer . Size   -  vtx_begin ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    commands . back ( ) . vtx_count  - =  ( unsigned  int ) ( vtx_count_max  -  vtx_count ) ;   
					 
					 
					 
					    commands . back ( ) . vtx_count  - =  ( unsigned  int ) ( vtx_count_max  -  vtx_count ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    vtx_write  - =  ( vtx_count_max  -  vtx_count ) ;   
					 
					 
					 
					    vtx_write  - =  ( vtx_count_max  -  vtx_count ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -9372,7 +9372,7 @@ ImFontAtlas::~ImFontAtlas() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void     ImFontAtlas : : ClearInputData ( )  
					 
					 
					 
					void     ImFontAtlas : : ClearInputData ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  InputData . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  InputData . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( InputData [ i ] - > TTFData )   
					 
					 
					 
					        if  ( InputData [ i ] - > TTFData )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGui : : MemFree ( InputData [ i ] - > TTFData ) ;   
					 
					 
					 
					            ImGui : : MemFree ( InputData [ i ] - > TTFData ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9393,7 +9393,7 @@ void    ImFontAtlas::ClearTexData() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void     ImFontAtlas : : ClearFonts ( )  
					 
					 
					 
					void     ImFontAtlas : : ClearFonts ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  Fonts . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  Fonts . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        Fonts [ i ] - > ~ ImFont ( ) ;   
					 
					 
					 
					        Fonts [ i ] - > ~ ImFont ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : MemFree ( Fonts [ i ] ) ;   
					 
					 
					 
					        ImGui : : MemFree ( Fonts [ i ] ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -9513,7 +9513,7 @@ ImFont* ImFontAtlas::AddFontFromMemoryCompressedTTF(const void* compressed_ttf_d 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					bool     ImFontAtlas : : Build ( )  
					 
					 
					 
					bool     ImFontAtlas : : Build ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IM_ASSERT ( InputData . size ( )   >  0 ) ;   
					 
					 
					 
					    IM_ASSERT ( InputData . Size   >  0 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    TexID  =  NULL ;   
					 
					 
					 
					    TexID  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    TexWidth  =  TexHeight  =  0 ;   
					 
					 
					 
					    TexWidth  =  TexHeight  =  0 ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9523,7 +9523,7 @@ bool    ImFontAtlas::Build() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Initialize font information early (so we can error without any cleanup) + count glyphs
   
					 
					 
					 
					    // Initialize font information early (so we can error without any cleanup) + count glyphs
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int  total_glyph_count  =  0 ;   
					 
					 
					 
					    int  total_glyph_count  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int  total_glyph_range_count  =  0 ;   
					 
					 
					 
					    int  total_glyph_range_count  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  input_i  =  0 ;  input_i  <  InputData . size ( ) ;  input_i + + )   
					 
					 
					 
					    for  ( int  input_i  =  0 ;  input_i  <  InputData . Size ;  input_i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImFontAtlasData &  data  =  * InputData [ input_i ] ;   
					 
					 
					 
					        ImFontAtlasData &  data  =  * InputData [ input_i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IM_ASSERT ( data . OutFont  & &  ( ! data . OutFont - > IsLoaded ( )  | |  data . OutFont - > ContainerAtlas  = =  this ) ) ;   
					 
					 
					 
					        IM_ASSERT ( data . OutFont  & &  ( ! data . OutFont - > IsLoaded ( )  | |  data . OutFont - > ContainerAtlas  = =  this ) ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -9553,8 +9553,8 @@ bool    ImFontAtlas::Build() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Pack our extra data rectangles first, so it will be on the upper-left corner of our texture (UV will have small values).
   
					 
					 
					 
					    // Pack our extra data rectangles first, so it will be on the upper-left corner of our texture (UV will have small values).
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVector < stbrp_rect >  extra_rects ;   
					 
					 
					 
					    ImVector < stbrp_rect >  extra_rects ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    RenderCustomTexData ( 0 ,  & extra_rects ) ;   
					 
					 
					 
					    RenderCustomTexData ( 0 ,  & extra_rects ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    stbrp_pack_rects ( ( stbrp_context * ) spc . pack_info ,  & extra_rects [ 0 ] ,  extra_rects . size ( ) ) ;   
					 
					 
					 
					    stbrp_pack_rects ( ( stbrp_context * ) spc . pack_info ,  & extra_rects [ 0 ] ,  extra_rects . Size ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  extra_rects . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  extra_rects . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( extra_rects [ i ] . was_packed )   
					 
					 
					 
					        if  ( extra_rects [ i ] . was_packed )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            TexHeight  =  ImMax ( TexHeight ,  extra_rects [ i ] . y  +  extra_rects [ i ] . h ) ;   
					 
					 
					 
					            TexHeight  =  ImMax ( TexHeight ,  extra_rects [ i ] . y  +  extra_rects [ i ] . h ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9568,7 +9568,7 @@ bool    ImFontAtlas::Build() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    memset ( buf_ranges ,  0 ,  total_glyph_range_count  *  sizeof ( stbtt_pack_range ) ) ;   
					 
					 
					 
					    memset ( buf_ranges ,  0 ,  total_glyph_range_count  *  sizeof ( stbtt_pack_range ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // First font pass: pack all glyphs (no rendering at this point, we are working with glyph sizes only)
   
					 
					 
					 
					    // First font pass: pack all glyphs (no rendering at this point, we are working with glyph sizes only)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  input_i  =  0 ;  input_i  <  InputData . size ( ) ;  input_i + + )   
					 
					 
					 
					    for  ( int  input_i  =  0 ;  input_i  <  InputData . Size ;  input_i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImFontAtlasData &  data  =  * InputData [ input_i ] ;   
					 
					 
					 
					        ImFontAtlasData &  data  =  * InputData [ input_i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -9617,7 +9617,7 @@ bool    ImFontAtlas::Build() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    spc . height  =  TexHeight ;   
					 
					 
					 
					    spc . height  =  TexHeight ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Second pass: render characters
   
					 
					 
					 
					    // Second pass: render characters
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  input_i  =  0 ;  input_i  <  InputData . size ( ) ;  input_i + + )   
					 
					 
					 
					    for  ( int  input_i  =  0 ;  input_i  <  InputData . Size ;  input_i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImFontAtlasData &  data  =  * InputData [ input_i ] ;   
					 
					 
					 
					        ImFontAtlasData &  data  =  * InputData [ input_i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ret  =  stbtt_PackFontRangesRenderIntoRects ( & spc ,  & data . FontInfo ,  data . Ranges ,  data . RangesCount ,  data . Rects ) ;   
					 
					 
					 
					        ret  =  stbtt_PackFontRangesRenderIntoRects ( & spc ,  & data . FontInfo ,  data . Ranges ,  data . RangesCount ,  data . Rects ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9630,7 +9630,7 @@ bool    ImFontAtlas::Build() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    buf_rects  =  NULL ;   
					 
					 
					 
					    buf_rects  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Third pass: setup ImFont and glyphs for runtime
   
					 
					 
					 
					    // Third pass: setup ImFont and glyphs for runtime
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  input_i  =  0 ;  input_i  <  InputData . size ( ) ;  input_i + + )   
					 
					 
					 
					    for  ( int  input_i  =  0 ;  input_i  <  InputData . Size ;  input_i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImFontAtlasData &  data  =  * InputData [ input_i ] ;   
					 
					 
					 
					        ImFontAtlasData &  data  =  * InputData [ input_i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        data . OutFont - > ContainerAtlas  =  this ;   
					 
					 
					 
					        data . OutFont - > ContainerAtlas  =  this ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9655,7 +9655,7 @@ bool    ImFontAtlas::Build() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( ! pc . x0  & &  ! pc . x1  & &  ! pc . y0  & &  ! pc . y1 )   
					 
					 
					 
					                if  ( ! pc . x0  & &  ! pc . x1  & &  ! pc . y0  & &  ! pc . y1 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    continue ;   
					 
					 
					 
					                    continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                data . OutFont - > Glyphs . resize ( data . OutFont - > Glyphs . size ( )   +  1 ) ;   
					 
					 
					 
					                data . OutFont - > Glyphs . resize ( data . OutFont - > Glyphs . Size   +  1 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                ImFont : : Glyph &  glyph  =  data . OutFont - > Glyphs . back ( ) ;   
					 
					 
					 
					                ImFont : : Glyph &  glyph  =  data . OutFont - > Glyphs . back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                glyph . Codepoint  =  ( ImWchar ) ( range . first_unicode_char_in_range  +  char_idx ) ;   
					 
					 
					 
					                glyph . Codepoint  =  ( ImWchar ) ( range . first_unicode_char_in_range  +  char_idx ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                glyph . Width  =  ( signed  short ) pc . x1  -  pc . x0  +  1 ;   
					 
					 
					 
					                glyph . Width  =  ( signed  short ) pc . x1  -  pc . x0  +  1 ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -9909,7 +9909,7 @@ void    ImFont::Clear() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void  ImFont : : BuildLookupTable ( )  
					 
					 
					 
					void  ImFont : : BuildLookupTable ( )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int  max_codepoint  =  0 ;   
					 
					 
					 
					    int  max_codepoint  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  Glyphs . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  ! =  Glyphs . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        max_codepoint  =  ImMax ( max_codepoint ,  ( int ) Glyphs [ i ] . Codepoint ) ;   
					 
					 
					 
					        max_codepoint  =  ImMax ( max_codepoint ,  ( int ) Glyphs [ i ] . Codepoint ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IndexXAdvance . clear ( ) ;   
					 
					 
					 
					    IndexXAdvance . clear ( ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9921,7 +9921,7 @@ void ImFont::BuildLookupTable() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IndexXAdvance [ i ]  =  - 1.0f ;   
					 
					 
					 
					        IndexXAdvance [ i ]  =  - 1.0f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IndexLookup [ i ]  =  - 1 ;   
					 
					 
					 
					        IndexLookup [ i ]  =  - 1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  Glyphs . size ( ) ;  i + + )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  Glyphs . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        int  codepoint  =  ( int ) Glyphs [ i ] . Codepoint ;   
					 
					 
					 
					        int  codepoint  =  ( int ) Glyphs [ i ] . Codepoint ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IndexXAdvance [ codepoint ]  =  Glyphs [ i ] . XAdvance ;   
					 
					 
					 
					        IndexXAdvance [ codepoint ]  =  Glyphs [ i ] . XAdvance ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9933,13 +9933,13 @@ void ImFont::BuildLookupTable() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( FindGlyph ( ( unsigned  short ) '   ' ) )   
					 
					 
					 
					    if  ( FindGlyph ( ( unsigned  short ) '   ' ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( Glyphs . back ( ) . Codepoint  ! =  ' \t ' )    // So we can call this function multiple times
   
					 
					 
					 
					        if  ( Glyphs . back ( ) . Codepoint  ! =  ' \t ' )    // So we can call this function multiple times
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            Glyphs . resize ( Glyphs . size ( )   +  1 ) ;   
					 
					 
					 
					            Glyphs . resize ( Glyphs . Size   +  1 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        ImFont : : Glyph &  tab_glyph  =  Glyphs . back ( ) ;   
					 
					 
					 
					        ImFont : : Glyph &  tab_glyph  =  Glyphs . back ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        tab_glyph  =  * FindGlyph ( ( unsigned  short ) '   ' ) ;   
					 
					 
					 
					        tab_glyph  =  * FindGlyph ( ( unsigned  short ) '   ' ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        tab_glyph . Codepoint  =  ' \t ' ;   
					 
					 
					 
					        tab_glyph . Codepoint  =  ' \t ' ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        tab_glyph . XAdvance  * =  4 ;   
					 
					 
					 
					        tab_glyph . XAdvance  * =  4 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IndexXAdvance [ ( int ) tab_glyph . Codepoint ]  =  ( float ) tab_glyph . XAdvance ;   
					 
					 
					 
					        IndexXAdvance [ ( int ) tab_glyph . Codepoint ]  =  ( float ) tab_glyph . XAdvance ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IndexLookup [ ( int ) tab_glyph . Codepoint ]  =  ( int ) ( Glyphs . size ( ) - 1 ) ;   
					 
					 
					 
					        IndexLookup [ ( int ) tab_glyph . Codepoint ]  =  ( int ) ( Glyphs . Size - 1 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    FallbackGlyph  =  NULL ;   
					 
					 
					 
					    FallbackGlyph  =  NULL ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -9958,7 +9958,7 @@ void ImFont::SetFallbackChar(ImWchar c) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					const  ImFont : : Glyph *  ImFont : : FindGlyph ( unsigned  short  c )  const  
					 
					 
					 
					const  ImFont : : Glyph *  ImFont : : FindGlyph ( unsigned  short  c )  const  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( c  <  IndexLookup . size ( ) )   
					 
					 
					 
					    if  ( c  <  IndexLookup . Size )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  int  i  =  IndexLookup [ c ] ;   
					 
					 
					 
					        const  int  i  =  IndexLookup [ c ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( i  ! =  - 1 )   
					 
					 
					 
					        if  ( i  ! =  - 1 )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -10192,7 +10192,7 @@ const char* ImFont::CalcWordWrapPositionA(float scale, const char* text, const c 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  float  char_width  =  ( ( int ) c  <  IndexXAdvance . size ( ) )  ?  IndexXAdvance [ ( int ) c ]  *  scale  :  FallbackXAdvance ;   
					 
					 
					 
					        const  float  char_width  =  ( ( int ) c  <  IndexXAdvance . Size )  ?  IndexXAdvance [ ( int ) c ]  *  scale  :  FallbackXAdvance ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ImCharIsSpace ( c ) )   
					 
					 
					 
					        if  ( ImCharIsSpace ( c ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( inside_word )   
					 
					 
					 
					            if  ( inside_word )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -10308,7 +10308,7 @@ ImVec2 ImFont::CalcTextSizeA(float size, float max_width, float wrap_width, cons 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                continue ;   
					 
					 
					 
					                continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        
  
					 
					 
					 
					        
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  float  char_width  =  ( ( int ) c  <  IndexXAdvance . size ( )   ?  IndexXAdvance [ ( int ) c ]  :  FallbackXAdvance )  *  scale ;   
					 
					 
					 
					        const  float  char_width  =  ( ( int ) c  <  IndexXAdvance . Size   ?  IndexXAdvance [ ( int ) c ]  :  FallbackXAdvance )  *  scale ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( line_width  +  char_width  > =  max_width )   
					 
					 
					 
					        if  ( line_width  +  char_width  > =  max_width )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            s  =  prev_s ;   
					 
					 
					 
					            s  =  prev_s ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -10852,13 +10852,13 @@ void ImGui::ShowTestWindow(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGui : : TreePop ( ) ;   
					 
					 
					 
					            ImGui : : TreePop ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ImGui : : TreeNode ( " Fonts " ,  " Fonts (%d) " ,  ImGui : : GetIO ( ) . Fonts - > Fonts . size ( ) ) )   
					 
					 
					 
					        if  ( ImGui : : TreeNode ( " Fonts " ,  " Fonts (%d) " ,  ImGui : : GetIO ( ) . Fonts - > Fonts . Size ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGui : : TextWrapped ( " Tip: Load fonts with GetIO().Fonts->AddFontFromFileTTF(). " ) ;   
					 
					 
					 
					            ImGui : : TextWrapped ( " Tip: Load fonts with GetIO().Fonts->AddFontFromFileTTF(). " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            for  ( int  i  =  0 ;  i  <  ImGui : : GetIO ( ) . Fonts - > Fonts . size ( ) ;  i + + )   
					 
					 
					 
					            for  ( int  i  =  0 ;  i  <  ImGui : : GetIO ( ) . Fonts - > Fonts . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImFont *  font  =  ImGui : : GetIO ( ) . Fonts - > Fonts [ i ] ;   
					 
					 
					 
					                ImFont *  font  =  ImGui : : GetIO ( ) . Fonts - > Fonts [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImGui : : BulletText ( " Font %d: %.2f pixels, %d glyphs " ,  i ,  font - > FontSize ,  font - > Glyphs . size ( ) ) ;   
					 
					 
					 
					                ImGui : : BulletText ( " Font %d: %.2f pixels, %d glyphs " ,  i ,  font - > FontSize ,  font - > Glyphs . Size ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                ImGui : : TreePush ( ( void * ) i ) ;   
					 
					 
					 
					                ImGui : : TreePush ( ( void * ) i ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImGui : : PushFont ( font ) ;   
					 
					 
					 
					                ImGui : : PushFont ( font ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImGui : : Text ( " The quick brown fox jumps over the lazy dog " ) ;   
					 
					 
					 
					                ImGui : : Text ( " The quick brown fox jumps over the lazy dog " ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -11337,7 +11337,7 @@ void ImGui::ShowTestWindow(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : PlotLines ( " Frame Times " ,  arr ,  IM_ARRAYSIZE ( arr ) ) ;   
					 
					 
					 
					        ImGui : : PlotLines ( " Frame Times " ,  arr ,  IM_ARRAYSIZE ( arr ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        static  bool  pause ;   
					 
					 
					 
					        static  bool  pause ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        static  ImVector < float >  values ;  if  ( values . empty ( ) )  {  values . resize ( 90 ) ;  memset ( & values . front ( ) ,  0 ,  values . size ( ) * sizeof ( float ) ) ;  }  
  
					 
					 
					 
					        static  ImVector < float >  values ;  if  ( values . empty ( ) )  {  values . resize ( 90 ) ;  memset ( & values . front ( ) ,  0 ,  values . Size * sizeof ( float ) ) ;  }  
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        static  int  values_offset  =  0 ;  
  
					 
					 
					 
					        static  int  values_offset  =  0 ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ! pause )  
  
					 
					 
					 
					        if  ( ! pause )  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -11346,11 +11346,11 @@ void ImGui::ShowTestWindow(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                static  float  phase  =  0.0f ;   
					 
					 
					 
					                static  float  phase  =  0.0f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                values [ values_offset ]  =  cosf ( phase ) ;  
  
					 
					 
					 
					                values [ values_offset ]  =  cosf ( phase ) ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                values_offset  =  ( values_offset + 1 ) % values . size ( ) ;  
  
					 
					 
					 
					                values_offset  =  ( values_offset + 1 ) % values . Size ;  
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                phase  + =  0.10f * values_offset ;  
  
					 
					 
					 
					                phase  + =  0.10f * values_offset ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : PlotLines ( " ##Graph " ,  & values . front ( ) ,  ( int ) values . size ( ) ,  values_offset ,  " avg 0.0 " ,  - 1.0f ,  1.0f ,  ImVec2 ( 0 , 80 ) ) ;   
					 
					 
					 
					        ImGui : : PlotLines ( " ##Graph " ,  & values . front ( ) ,  ( int ) values . Size ,  values_offset ,  " avg 0.0 " ,  - 1.0f ,  1.0f ,  ImVec2 ( 0 , 80 ) ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : SameLine ( 0 ,  ( int ) ImGui : : GetStyle ( ) . ItemInnerSpacing . x ) ;  
  
					 
					 
					 
					        ImGui : : SameLine ( 0 ,  ( int ) ImGui : : GetStyle ( ) . ItemInnerSpacing . x ) ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : BeginGroup ( ) ;   
					 
					 
					 
					        ImGui : : BeginGroup ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : Text ( " Graph " ) ;   
					 
					 
					 
					        ImGui : : Text ( " Graph " ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -12013,7 +12013,7 @@ void ImGui::ShowMetricsWindow(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            static  void  NodeDrawList ( ImDrawList *  draw_list ,  const  char *  label )   
					 
					 
					 
					            static  void  NodeDrawList ( ImDrawList *  draw_list ,  const  char *  label )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                bool  node_opened  =  ImGui : : TreeNode ( draw_list ,  " %s: '%s' %d vtx, %d cmds " ,  label ,  draw_list - > owner_name  ?  draw_list - > owner_name  :  " " ,  draw_list - > vtx_buffer . size ( ) ,  draw_list - > commands . size ( ) ) ;   
					 
					 
					 
					                bool  node_opened  =  ImGui : : TreeNode ( draw_list ,  " %s: '%s' %d vtx, %d cmds " ,  label ,  draw_list - > owner_name  ?  draw_list - > owner_name  :  " " ,  draw_list - > vtx_buffer . Size ,  draw_list - > commands . Size ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( draw_list  = =  ImGui : : GetWindowDrawList ( ) )   
					 
					 
					 
					                if  ( draw_list  = =  ImGui : : GetWindowDrawList ( ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                {   
					 
					 
					 
					                {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    ImGui : : SameLine ( ) ;   
					 
					 
					 
					                    ImGui : : SameLine ( ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12039,9 +12039,9 @@ void ImGui::ShowMetricsWindow(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            static  void  NodeWindows ( ImVector < ImGuiWindow * > &  windows ,  const  char *  label )   
					 
					 
					 
					            static  void  NodeWindows ( ImVector < ImGuiWindow * > &  windows ,  const  char *  label )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( ! ImGui : : TreeNode ( label ,  " %s (%d) " ,  label ,  windows . size ( ) ) )   
					 
					 
					 
					                if  ( ! ImGui : : TreeNode ( label ,  " %s (%d) " ,  label ,  windows . Size ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    return ;   
					 
					 
					 
					                    return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                for  ( int  i  =  0 ;  i  <  windows . size ( ) ;  i + + )   
					 
					 
					 
					                for  ( int  i  =  0 ;  i  <  windows . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    Funcs : : NodeWindow ( windows [ i ] ,  " Window " ) ;   
					 
					 
					 
					                    Funcs : : NodeWindow ( windows [ i ] ,  " Window " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImGui : : TreePop ( ) ;   
					 
					 
					 
					                ImGui : : TreePop ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12052,8 +12052,8 @@ void ImGui::ShowMetricsWindow(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    return ;   
					 
					 
					 
					                    return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                NodeDrawList ( window - > DrawList ,  " DrawList " ) ;   
					 
					 
					 
					                NodeDrawList ( window - > DrawList ,  " DrawList " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( window - > RootWindow  ! =  window )  NodeWindow ( window - > RootWindow ,  " RootWindow " ) ;   
					 
					 
					 
					                if  ( window - > RootWindow  ! =  window )  NodeWindow ( window - > RootWindow ,  " RootWindow " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( window - > DC . ChildWindows . size ( )   >  0 )  NodeWindows ( window - > DC . ChildWindows ,  " ChildWindows " ) ;   
					 
					 
					 
					                if  ( window - > DC . ChildWindows . Size   >  0 )  NodeWindows ( window - > DC . ChildWindows ,  " ChildWindows " ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImGui : : BulletText ( " Storage: %d bytes " ,  window - > StateStorage . Data . size ( )   *  sizeof ( ImGuiStorage : : Pair ) ) ;   
					 
					 
					 
					                ImGui : : BulletText ( " Storage: %d bytes " ,  window - > StateStorage . Data . Size   *  sizeof ( ImGuiStorage : : Pair ) ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                ImGui : : TreePop ( ) ;   
					 
					 
					 
					                ImGui : : TreePop ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        } ;   
					 
					 
					 
					        } ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12061,15 +12061,15 @@ void ImGui::ShowMetricsWindow(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGuiState &  g  =  * GImGui ;                 // Access private state
   
					 
					 
					 
					        ImGuiState &  g  =  * GImGui ;                 // Access private state
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        g . DisableHideTextAfterDoubleHash + + ;      // Not exposed (yet). Disable processing that hides text after '##' markers.
   
					 
					 
					 
					        g . DisableHideTextAfterDoubleHash + + ;      // Not exposed (yet). Disable processing that hides text after '##' markers.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        Funcs : : NodeWindows ( g . Windows ,  " Windows " ) ;   
					 
					 
					 
					        Funcs : : NodeWindows ( g . Windows ,  " Windows " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ImGui : : TreeNode ( " DrawList " ,  " Active DrawLists (%d) " ,  g . RenderDrawLists [ 0 ] . size ( ) ) )   
					 
					 
					 
					        if  ( ImGui : : TreeNode ( " DrawList " ,  " Active DrawLists (%d) " ,  g . RenderDrawLists [ 0 ] . Size ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            for  ( int  i  =  0 ;  i  <  g . RenderDrawLists [ 0 ] . size ( ) ;  i + + )   
					 
					 
					 
					            for  ( int  i  =  0 ;  i  <  g . RenderDrawLists [ 0 ] . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                Funcs : : NodeDrawList ( g . RenderDrawLists [ 0 ] [ i ] ,  " DrawList " ) ;   
					 
					 
					 
					                Funcs : : NodeDrawList ( g . RenderDrawLists [ 0 ] [ i ] ,  " DrawList " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGui : : TreePop ( ) ;   
					 
					 
					 
					            ImGui : : TreePop ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ImGui : : TreeNode ( " Popups " ,  " Opened Popups (%d) " ,  g . OpenedPopupStack . size ( ) ) )   
					 
					 
					 
					        if  ( ImGui : : TreeNode ( " Popups " ,  " Opened Popups (%d) " ,  g . OpenedPopupStack . Size ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            for  ( int  i  =  0 ;  i  <  g . OpenedPopupStack . size ( ) ;  i + + )   
					 
					 
					 
					            for  ( int  i  =  0 ;  i  <  g . OpenedPopupStack . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                ImGui : : BulletText ( " PopupID: %08x, Window: '%s' " ,  g . OpenedPopupStack [ i ] . PopupID ,  g . OpenedPopupStack [ i ] . Window  ?  g . OpenedPopupStack [ i ] . Window - > Name  :  " NULL " ) ;   
					 
					 
					 
					                ImGui : : BulletText ( " PopupID: %08x, Window: '%s' " ,  g . OpenedPopupStack [ i ] . PopupID ,  g . OpenedPopupStack [ i ] . Window  ?  g . OpenedPopupStack [ i ] . Window - > Name  :  " NULL " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGui : : TreePop ( ) ;   
					 
					 
					 
					            ImGui : : TreePop ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -12228,7 +12228,7 @@ static void ShowExampleAppCustomRendering(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    static  ImVector < ImVec2 >  points ;   
					 
					 
					 
					    static  ImVector < ImVec2 >  points ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    static  bool  adding_line  =  false ;   
					 
					 
					 
					    static  bool  adding_line  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( ImGui : : Button ( " Clear " ) )  points . clear ( ) ;   
					 
					 
					 
					    if  ( ImGui : : Button ( " Clear " ) )  points . clear ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( points . size ( )   > =  2 )  {  ImGui : : SameLine ( ) ;  if  ( ImGui : : Button ( " Undo " ) )  {  points . pop_back ( ) ;  points . pop_back ( ) ;  }  }   
					 
					 
					 
					    if  ( points . Size   > =  2 )  {  ImGui : : SameLine ( ) ;  if  ( ImGui : : Button ( " Undo " ) )  {  points . pop_back ( ) ;  points . pop_back ( ) ;  }  }   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    ImGui : : Text ( " Left-click and drag to add lines " ) ;   
					 
					 
					 
					    ImGui : : Text ( " Left-click and drag to add lines " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGui : : Text ( " Right-click to undo " ) ;   
					 
					 
					 
					    ImGui : : Text ( " Right-click to undo " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -12265,7 +12265,7 @@ static void ShowExampleAppCustomRendering(bool* opened) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    draw_list - > PushClipRect ( ImVec4 ( canvas_pos . x ,  canvas_pos . y ,  canvas_pos . x + canvas_size . x ,  canvas_pos . y + canvas_size . y ) ) ;       // clip lines within the canvas (if we resize it, etc.)
   
					 
					 
					 
					    draw_list - > PushClipRect ( ImVec4 ( canvas_pos . x ,  canvas_pos . y ,  canvas_pos . x + canvas_size . x ,  canvas_pos . y + canvas_size . y ) ) ;       // clip lines within the canvas (if we resize it, etc.)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  points . size ( )   -  1 ;  i  + =  2 )   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  points . Size   -  1 ;  i  + =  2 )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        draw_list - > AddLine ( ImVec2 ( canvas_pos . x  +  points [ i ] . x ,  canvas_pos . y  +  points [ i ] . y ) ,  ImVec2 ( canvas_pos . x  +  points [ i + 1 ] . x ,  canvas_pos . y  +  points [ i + 1 ] . y ) ,  0xFF00FFFF ) ;   
					 
					 
					 
					        draw_list - > AddLine ( ImVec2 ( canvas_pos . x  +  points [ i ] . x ,  canvas_pos . y  +  points [ i ] . y ) ,  ImVec2 ( canvas_pos . x  +  points [ i + 1 ] . x ,  canvas_pos . y  +  points [ i + 1 ] . y ) ,  0xFF00FFFF ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    draw_list - > PopClipRect ( ) ;   
					 
					 
					 
					    draw_list - > PopClipRect ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( adding_preview )   
					 
					 
					 
					    if  ( adding_preview )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12280,7 +12280,7 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVector < char * >        Items ;   
					 
					 
					 
					    ImVector < char * >        Items ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool                   ScrollToBottom ;   
					 
					 
					 
					    bool                   ScrollToBottom ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVector < char * >        History ;   
					 
					 
					 
					    ImVector < char * >        History ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int                    HistoryPos ;     // -1: new line, 0..History.size() -1 browsing history.
   
					 
					 
					 
					    int                    HistoryPos ;     // -1: new line, 0..History.Size -1 browsing history.
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    ImVector < const  char * >  Commands ;   
					 
					 
					 
					    ImVector < const  char * >  Commands ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ExampleAppConsole ( )   
					 
					 
					 
					    ExampleAppConsole ( )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12295,13 +12295,13 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ~ ExampleAppConsole ( )   
					 
					 
					 
					    ~ ExampleAppConsole ( )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ClearLog ( ) ;   
					 
					 
					 
					        ClearLog ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  Items . size ( ) ;  i + + )  
  
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  Items . Size ;  i + + )  
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            free ( History [ i ] ) ;  
  
					 
					 
					 
					            free ( History [ i ] ) ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void     ClearLog ( )   
					 
					 
					 
					    void     ClearLog ( )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  Items . size ( ) ;  i + + )  
  
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  Items . Size ;  i + + )  
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            free ( Items [ i ] ) ;  
  
					 
					 
					 
					            free ( Items [ i ] ) ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        Items . clear ( ) ;   
					 
					 
					 
					        Items . clear ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ScrollToBottom  =  true ;   
					 
					 
					 
					        ScrollToBottom  =  true ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -12332,7 +12332,7 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // TODO: display items starting from the bottom
   
					 
					 
					 
					        // TODO: display items starting from the bottom
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ImGui : : SmallButton ( " Add Dummy Text " ) )  {  AddLog ( " %d some text " ,  Items . size ( ) ) ;  AddLog ( " some more text " ) ;  AddLog ( " display very important message here! " ) ;  }  ImGui : : SameLine ( ) ;  
  
					 
					 
					 
					        if  ( ImGui : : SmallButton ( " Add Dummy Text " ) )  {  AddLog ( " %d some text " ,  Items . Size ) ;  AddLog ( " some more text " ) ;  AddLog ( " display very important message here! " ) ;  }  ImGui : : SameLine ( ) ;  
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ImGui : : SmallButton ( " Add Dummy Error " ) )  AddLog ( " [error] something went wrong " ) ;  ImGui : : SameLine ( ) ;  
  
					 
					 
					 
					        if  ( ImGui : : SmallButton ( " Add Dummy Error " ) )  AddLog ( " [error] something went wrong " ) ;  ImGui : : SameLine ( ) ;  
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ImGui : : SmallButton ( " Clear " ) )  ClearLog ( ) ;   
					 
					 
					 
					        if  ( ImGui : : SmallButton ( " Clear " ) )  ClearLog ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        //static float t = 0.0f; if (ImGui::GetTime() - t > 0.02f) { t = ImGui::GetTime(); AddLog("Spam %f", t); }
   
					 
					 
					 
					        //static float t = 0.0f; if (ImGui::GetTime() - t > 0.02f) { t = ImGui::GetTime(); AddLog("Spam %f", t); }
   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12355,7 +12355,7 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ImGui : : EndPopup ( ) ;   
					 
					 
					 
					            ImGui : : EndPopup ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ImGui : : PushStyleVar ( ImGuiStyleVar_ItemSpacing ,  ImVec2 ( 4 , 1 ) ) ;  // Tighten spacing
   
					 
					 
					 
					        ImGui : : PushStyleVar ( ImGuiStyleVar_ItemSpacing ,  ImVec2 ( 4 , 1 ) ) ;  // Tighten spacing
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  Items . size ( ) ;  i + + )   
					 
					 
					 
					        for  ( int  i  =  0 ;  i  <  Items . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            const  char *  item  =  Items [ i ] ;   
					 
					 
					 
					            const  char *  item  =  Items [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ! filter . PassFilter ( item ) )   
					 
					 
					 
					            if  ( ! filter . PassFilter ( item ) )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -12397,7 +12397,7 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Insert into history. First find match and delete it so it can be pushed to the back. This isn't trying to be smart or optimal.
   
					 
					 
					 
					        // Insert into history. First find match and delete it so it can be pushed to the back. This isn't trying to be smart or optimal.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        HistoryPos  =  - 1 ;   
					 
					 
					 
					        HistoryPos  =  - 1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  i  =  History . size ( ) - 1 ;  i  > =  0 ;  i - - )   
					 
					 
					 
					        for  ( int  i  =  History . Size - 1 ;  i  > =  0 ;  i - - )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ImStricmp ( History [ i ] ,  command_line )  = =  0 )   
					 
					 
					 
					            if  ( ImStricmp ( History [ i ] ,  command_line )  = =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                free ( History [ i ] ) ;   
					 
					 
					 
					                free ( History [ i ] ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12414,12 +12414,12 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( ImStricmp ( command_line ,  " HELP " )  = =  0 )   
					 
					 
					 
					        else  if  ( ImStricmp ( command_line ,  " HELP " )  = =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            AddLog ( " Commands: " ) ;   
					 
					 
					 
					            AddLog ( " Commands: " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            for  ( int  i  =  0 ;  i  <  Commands . size ( ) ;  i + + )   
					 
					 
					 
					            for  ( int  i  =  0 ;  i  <  Commands . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                AddLog ( " - %s " ,  Commands [ i ] ) ;   
					 
					 
					 
					                AddLog ( " - %s " ,  Commands [ i ] ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( ImStricmp ( command_line ,  " HISTORY " )  = =  0 )   
					 
					 
					 
					        else  if  ( ImStricmp ( command_line ,  " HISTORY " )  = =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            for  ( int  i  =  History . size ( )   > =  10  ?  History . size ( )   -  10  :  0 ;  i  <  History . size ( ) ;  i + + )   
					 
					 
					 
					            for  ( int  i  =  History . Size   > =  10  ?  History . Size   -  10  :  0 ;  i  <  History . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                AddLog ( " %3d: %s \n " ,  i ,  History [ i ] ) ;   
					 
					 
					 
					                AddLog ( " %3d: %s \n " ,  i ,  History [ i ] ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else   
					 
					 
					 
					        else   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -12456,16 +12456,16 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                // Build a list of candidates
   
					 
					 
					 
					                // Build a list of candidates
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImVector < const  char * >  candidates ;   
					 
					 
					 
					                ImVector < const  char * >  candidates ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                for  ( int  i  =  0 ;  i  <  Commands . size ( ) ;  i + + )   
					 
					 
					 
					                for  ( int  i  =  0 ;  i  <  Commands . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    if  ( ImStrnicmp ( Commands [ i ] ,  word_start ,  ( int ) ( word_end - word_start ) )  = =  0 )   
					 
					 
					 
					                    if  ( ImStrnicmp ( Commands [ i ] ,  word_start ,  ( int ) ( word_end - word_start ) )  = =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        candidates . push_back ( Commands [ i ] ) ;   
					 
					 
					 
					                        candidates . push_back ( Commands [ i ] ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( candidates . size ( )   = =  0 )   
					 
					 
					 
					                if  ( candidates . Size   = =  0 )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                {   
					 
					 
					 
					                {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    // No match
   
					 
					 
					 
					                    // No match
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    AddLog ( " No match for  \" %.*s \" ! \n " ,  word_end - word_start ,  word_start ) ;   
					 
					 
					 
					                    AddLog ( " No match for  \" %.*s \" ! \n " ,  word_end - word_start ,  word_start ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                }   
					 
					 
					 
					                }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                else  if  ( candidates . size ( )   = =  1 )   
					 
					 
					 
					                else  if  ( candidates . Size   = =  1 )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                {   
					 
					 
					 
					                {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    // Single match. Delete the beginning of the word and replace it entirely so we've got nice casing
   
					 
					 
					 
					                    // Single match. Delete the beginning of the word and replace it entirely so we've got nice casing
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    data - > DeleteChars ( ( int ) ( word_start - data - > Buf ) ,  ( int ) ( word_end - word_start ) ) ;   
					 
					 
					 
					                    data - > DeleteChars ( ( int ) ( word_start - data - > Buf ) ,  ( int ) ( word_end - word_start ) ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12480,7 +12480,7 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    {   
					 
					 
					 
					                    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        int  c  =  0 ;   
					 
					 
					 
					                        int  c  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        bool  all_candidates_matches  =  true ;   
					 
					 
					 
					                        bool  all_candidates_matches  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        for  ( int  i  =  0 ;  i  <  candidates . size ( )   & &  all_candidates_matches ;  i + + )   
					 
					 
					 
					                        for  ( int  i  =  0 ;  i  <  candidates . Size   & &  all_candidates_matches ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                            if  ( i  = =  0 )   
					 
					 
					 
					                            if  ( i  = =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                                c  =  toupper ( candidates [ i ] [ match_len ] ) ;   
					 
					 
					 
					                                c  =  toupper ( candidates [ i ] [ match_len ] ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                            else  if  ( c  ! =  toupper ( candidates [ i ] [ match_len ] ) )   
					 
					 
					 
					                            else  if  ( c  ! =  toupper ( candidates [ i ] [ match_len ] ) )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12498,7 +12498,7 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    // List matches
   
					 
					 
					 
					                    // List matches
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    AddLog ( " Possible matches: \n " ) ;   
					 
					 
					 
					                    AddLog ( " Possible matches: \n " ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    for  ( int  i  =  0 ;  i  <  candidates . size ( ) ;  i + + )   
					 
					 
					 
					                    for  ( int  i  =  0 ;  i  <  candidates . Size ;  i + + )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                        AddLog ( " - %s \n " ,  candidates [ i ] ) ;   
					 
					 
					 
					                        AddLog ( " - %s \n " ,  candidates [ i ] ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                }   
					 
					 
					 
					                }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12511,14 +12511,14 @@ struct ExampleAppConsole 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( data - > EventKey  = =  ImGuiKey_UpArrow )   
					 
					 
					 
					                if  ( data - > EventKey  = =  ImGuiKey_UpArrow )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                {   
					 
					 
					 
					                {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    if  ( HistoryPos  = =  - 1 )   
					 
					 
					 
					                    if  ( HistoryPos  = =  - 1 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        HistoryPos  =  History . size ( )   -  1 ;   
					 
					 
					 
					                        HistoryPos  =  History . Size   -  1 ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    else  if  ( HistoryPos  >  0 )   
					 
					 
					 
					                    else  if  ( HistoryPos  >  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        HistoryPos - - ;   
					 
					 
					 
					                        HistoryPos - - ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                }   
					 
					 
					 
					                }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                else  if  ( data - > EventKey  = =  ImGuiKey_DownArrow )   
					 
					 
					 
					                else  if  ( data - > EventKey  = =  ImGuiKey_DownArrow )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                {   
					 
					 
					 
					                {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    if  ( HistoryPos  ! =  - 1 )   
					 
					 
					 
					                    if  ( HistoryPos  ! =  - 1 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        if  ( + + HistoryPos  > =  History . size ( ) )   
					 
					 
					 
					                        if  ( + + HistoryPos  > =  History . Size )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                            HistoryPos  =  - 1 ;   
					 
					 
					 
					                            HistoryPos  =  - 1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                }   
					 
					 
					 
					                }