@ -2551,16 +2551,15 @@ void ImGuiTextFilter::Build() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    input_range . split ( ' , ' ,  & Filters ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    CountGrep  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  ! =  Filters . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiTextRange &  f  :  Filters )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiTextRange &  f  =  Filters [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        while  ( f . b  <  f . e  & &  ImCharIsBlankA ( f . b [ 0 ] ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            f . b + + ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        while  ( f . e  >  f . b  & &  ImCharIsBlankA ( f . e [ - 1 ] ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            f . e - - ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( f . empty ( ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( Filters [ i ] . b [ 0 ]  ! =  ' - ' )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( f . b [ 0 ]  ! =  ' - ' )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            CountGrep  + =  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -2573,9 +2572,8 @@ bool ImGuiTextFilter::PassFilter(const char* text, const char* text_end) const 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( text  = =  NULL )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        text  =  " " ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  ! =  Filters . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( const  ImGuiTextRange &  f  :  Filters )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        const  ImGuiTextRange &  f  =  Filters [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( f . empty ( ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( f . b [ 0 ]  = =  ' - ' )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -2964,14 +2962,14 @@ static bool ImGuiListClipper_StepInternal(ImGuiListClipper* clipper) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // - Very important: when a starting position is after our maximum item, we set Min to (ItemsCount - 1). This allows us to handle most forms of wrapping.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // - Due to how Selectable extra padding they tend to be "unaligned" with exact unit in the item list,
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        //   which with the flooring/ceiling tend to lead to 2 items instead of one being submitted.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  i  =  0 ;  i  <   data - > Ranges . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( data - > Ranges [ i ] . PosToIndexConvert )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( ImGuiListClipperRange &  range  :   data - > Ranges )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( range . PosToIndexConvert )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                int  m1  =  ( int ) ( ( ( double ) data - > Ranges [ i ] . Min  -  window - > DC . CursorPos . y  -  data - > LossynessOffset )  /  clipper - > ItemsHeight ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                int  m2  =  ( int ) ( ( ( ( double ) data - > Ranges [ i ] . Max  -  window - > DC . CursorPos . y  -  data - > LossynessOffset )  /  clipper - > ItemsHeight )  +  0.999999f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                data - > Ranges [ i ] . Min  =  ImClamp ( already_submitted  +  m1  +  data - > Ranges [ i ] . PosToIndexOffsetMin ,  already_submitted ,  clipper - > ItemsCount  -  1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                data - > Ranges [ i ] . Max  =  ImClamp ( already_submitted  +  m2  +  data - > Ranges [ i ] . PosToIndexOffsetMax ,  data - > Ranges [ i ] . Min  +  1 ,  clipper - > ItemsCount ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                data - > Ranges [ i ] . PosToIndexConvert  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                int  m1  =  ( int ) ( ( ( double ) range . Min  -  window - > DC . CursorPos . y  -  data - > LossynessOffset )  /  clipper - > ItemsHeight ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                int  m2  =  ( int ) ( ( ( ( double ) range . Max  -  window - > DC . CursorPos . y  -  data - > LossynessOffset )  /  clipper - > ItemsHeight )  +  0.999999f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                range . Min  =  ImClamp ( already_submitted  +  m1  +  range . PosToIndexOffsetMin ,  already_submitted ,  clipper - > ItemsCount  -  1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                range . Max  =  ImClamp ( already_submitted  +  m2  +  range . PosToIndexOffsetMax ,  range . Min  +  1 ,  clipper - > ItemsCount ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                range . PosToIndexConvert  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiListClipper_SortAndFuseRanges ( data - > Ranges ,  data - > StepNo ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3482,13 +3480,12 @@ void ImGui::RenderMouseCursor(ImVec2 base_pos, float base_scale, ImGuiMouseCurso 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * GImGui ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    IM_ASSERT ( mouse_cursor  >  ImGuiMouseCursor_None  & &  mouse_cursor  <  ImGuiMouseCursor_COUNT ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImFontAtlas *  font_atlas  =  g . DrawListSharedData . Font - > ContainerAtlas ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Viewports . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // We scale cursor with current viewport/monitor, however Windows 10 for its own hardware cursor seems to be using a different scale factor.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImVec2  offset ,  size ,  uv [ 4 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! font_atlas - > GetMouseCursorTexData ( mouse_cursor ,  & offset ,  & size ,  & uv [ 0 ] ,  & uv [ 2 ] ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiViewportP *  viewport  =  g . Viewports [ n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        const  ImVec2  pos  =  base_pos  -  offset ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        const  float  scale  =  base_scale ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! viewport - > GetMainRect ( ) . Overlaps ( ImRect ( pos ,  pos  +  ImVec2 ( size . x  +  2 ,  size . y  +  2 )  *  scale ) ) )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3707,9 +3704,9 @@ void ImGui::RemoveContextHook(ImGuiContext* ctx, ImGuiID hook_id) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * ctx ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    IM_ASSERT ( hook_id  ! =  0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Hooks . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . Hooks [ n ] . HookId  = =  hook_id )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . Hooks [ n ] . Type  =  ImGuiContextHookType_PendingRemoval_ ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiContextHook &  hook  :   g . Hooks )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( hook . HookId  = =  hook_id )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            hook . Type  =  ImGuiContextHookType_PendingRemoval_ ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Call context hooks (used by e.g. test engine)
  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -3717,9 +3714,9 @@ void ImGui::RemoveContextHook(ImGuiContext* ctx, ImGuiID hook_id) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  ImGui : : CallContextHooks ( ImGuiContext *  ctx ,  ImGuiContextHookType  hook_type )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * ctx ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Hooks . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . Hooks [ n ] . Type  = =  hook_type )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . Hooks [ n ] . Callback ( & g ,  & g . Hooks [ n ] ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiContextHook &  hook  :   g . Hooks )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( hook . Type  = =  hook_type )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            hook . Callback ( & g ,  & hook ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -4554,8 +4551,8 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    SetCurrentFont ( GetDefaultFont ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    IM_ASSERT ( g . Font - > IsLoaded ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  virtual_space ( FLT_MAX ,  FLT_MAX ,  - FLT_MAX ,  - FLT_MAX ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Viewports . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        virtual_space . Add ( g . Viewports [ n ] - > GetMainRect ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        virtual_space . Add ( viewport - > GetMainRect ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . DrawListSharedData . ClipRectFullscreen  =  virtual_space . ToVec4 ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . DrawListSharedData . CurveTessellationTol  =  g . Style . CurveTessellationTol ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . DrawListSharedData . SetCircleTessellationMaxError ( g . Style . CircleTessellationMaxError ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -4570,8 +4567,8 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        g . DrawListSharedData . InitialFlags  | =  ImDrawListFlags_AllowVtxOffset ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Mark rendering data as invalid to prevent user who may have a handle on it to use it.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Viewports . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        g . Viewports [ n ] - > DrawDataP . Valid  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        viewport - > DrawDataP . Valid  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Drag and drop keep the source ID alive so even if the source disappear our state is consistent
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( g . DragDropActive  & &  g . DragDropPayload . SourceId  = =  g . ActiveId )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -4717,9 +4714,8 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Mark all windows as not visible and compact unused memory.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    IM_ASSERT ( g . WindowsFocusOrder . Size  < =  g . Windows . Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  float  memory_compact_start_time  =  ( g . GcCompactAll  | |  g . IO . ConfigMemoryCompactTimer  <  0.0f )  ?  FLT_MAX  :  ( float ) g . Time  -  g . IO . ConfigMemoryCompactTimer ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiWindow *  window  :  g . Windows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > WasActive  =  window - > Active ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > Active  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > WriteAccessed  =  false ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -4735,9 +4731,9 @@ void ImGui::NewFrame() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  <  g . TablesLastTimeActive . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . TablesLastTimeActive [ i ]  > =  0.0f  & &  g . TablesLastTimeActive [ i ]  <  memory_compact_start_time )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            TableGcCompactTransientBuffers ( g . Tables . GetByIndex ( i ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  <  g . TablesTempData . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . TablesTempData [ i ] . LastTimeActive  > =  0.0f  & &  g . TablesTempData [ i ] . LastTimeActive  <  memory_compact_start_time )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            TableGcCompactTransientBuffers ( & g . TablesTempData [ i ] ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiTableTempData &  table_temp_data  :  g . TablesTempData )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( table_temp_data . LastTimeActive  > =  0.0f  & &  table_temp_data . LastTimeActive  <  memory_compact_start_time )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            TableGcCompactTransientBuffers ( & table_temp_data ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( g . GcCompactAll )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        GcCompactTransientMiscBuffers ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . GcCompactAll  =  false ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -4817,12 +4813,9 @@ static void AddWindowToDrawData(ImGuiWindow* window, int layer) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiViewportP *  viewport  =  g . Viewports [ 0 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . IO . MetricsRenderWindows + + ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : AddDrawListToDrawDataEx ( & viewport - > DrawDataP ,  viewport - > DrawDataBuilder . Layers [ layer ] ,  window - > DrawList ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  <  window - > DC . ChildWindows . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiWindow *  child  =  window - > DC . ChildWindows [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiWindow *  child  :  window - > DC . ChildWindows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( IsWindowActiveAndVisible ( child ) )  // Clipped children may have been marked not active
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            AddWindowToDrawData ( child ,  layer ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  int  GetWindowDisplayLayer ( ImGuiWindow *  window )  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -5047,9 +5040,8 @@ void ImGui::EndFrame() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // We cannot do that on FocusWindow() because children may not exist yet
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . WindowsTempSortBuffer . resize ( 0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . WindowsTempSortBuffer . reserve ( g . Windows . Size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiWindow *  window  :  g . Windows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > Active  & &  ( window - > Flags  &  ImGuiWindowFlags_ChildWindow ) )        // if a child is active its parent will add it
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        AddWindowToSortBuffer ( & g . WindowsTempSortBuffer ,  window ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -5092,9 +5084,8 @@ void ImGui::Render() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    RenderDimmedBackgrounds ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Add background ImDrawList (for each active viewport)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  ! =   g . Viewports . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiViewportP *  viewport  =  g . Viewports [ n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        InitViewportDrawData ( viewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( viewport - > BgFgDrawLists [ 0 ]  ! =  NULL )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            AddDrawListToDrawDataEx ( & viewport - > DrawDataP ,  viewport - > DrawDataBuilder . Layers [ 0 ] ,  GetBackgroundDrawList ( viewport ) ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -5104,9 +5095,8 @@ void ImGui::Render() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiWindow *  windows_to_render_top_most [ 2 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    windows_to_render_top_most [ 0 ]  =  ( g . NavWindowingTarget  & &  ! ( g . NavWindowingTarget - > Flags  &  ImGuiWindowFlags_NoBringToFrontOnFocus ) )  ?  g . NavWindowingTarget - > RootWindow  :  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    windows_to_render_top_most [ 1 ]  =  ( g . NavWindowingTarget  ?  g . NavWindowingListWindow  :  NULL ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  ! =   g . Windows . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiWindow *  window  :   g . Windows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiWindow *  window  =  g . Windows [ n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        IM_MSVC_WARNING_SUPPRESS ( 6011 ) ;  // Static Analysis false positive "warning C6011: Dereferencing NULL pointer 'window'"
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( IsWindowActiveAndVisible ( window )  & &  ( window - > Flags  &  ImGuiWindowFlags_ChildWindow )  = =  0  & &  window  ! =  windows_to_render_top_most [ 0 ]  & &  window  ! =  windows_to_render_top_most [ 1 ] )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            AddRootWindowToDrawData ( window ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -5121,9 +5111,8 @@ void ImGui::Render() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Setup ImDrawData structures for end-user
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . IO . MetricsRenderVertices  =  g . IO . MetricsRenderIndices  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Viewports . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiViewportP *  viewport  =  g . Viewports [ n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        FlattenDrawDataIntoSingleLayer ( & viewport - > DrawDataBuilder ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Add foreground ImDrawList (for each active viewport)
   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -5133,8 +5122,8 @@ void ImGui::Render() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // We call _PopUnusedDrawCmd() last thing, as RenderDimmedBackgrounds() rely on a valid command being there (especially in docking branch).
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImDrawData *  draw_data  =  & viewport - > DrawDataP ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        IM_ASSERT ( draw_data - > CmdLists . Size  = =  draw_data - > CmdListsCount ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  draw_list_n  =  0 ;  draw_list_n  <   draw_data - > CmdLists . Size ;  draw_list_n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            draw_data - > CmdLists [ draw_ list_n ]  - > _PopUnusedDrawCmd ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( ImDrawList *  draw_list  :   draw_data - > CmdLists )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            draw_list - > _PopUnusedDrawCmd ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        g . IO . MetricsRenderVertices  + =  draw_data - > TotalVtxCount ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        g . IO . MetricsRenderIndices  + =  draw_data - > TotalIdxCount ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6199,9 +6188,9 @@ ImGuiWindow* ImGui::FindBlockingModal(ImGuiWindow* window) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Find a modal that has common parent with specified window. Specified window should be positioned behind that modal.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  <   g . OpenPopupStack . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiPopupData &  popup_data  :   g . OpenPopupStack )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiWindow *  popup_window  =  g . OpenPopupStack . Data [ i ] . Window ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiWindow *  popup_window  =  popup_data . Window ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( popup_window  = =  NULL  | |  ! ( popup_window - > Flags  &  ImGuiWindowFlags_Modal ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! popup_window - > Active  & &  ! popup_window - > WasActive )       // Check WasActive, because this code may run before popup renders on current frame, also check Active to handle newly created windows.
   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -12967,9 +12956,9 @@ ImGuiSettingsHandler* ImGui::FindSettingsHandler(const char* type_name) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * GImGui ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImGuiID  type_hash  =  ImHashStr ( type_name ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  handler_n  =  0 ;  handler_n  <   g . SettingsHandlers . Size ;  handler_n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . SettingsHandlers [ handler_n ]  . TypeHash  = =  type_hash )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            return  & g . SettingsHandlers [ handler_n ]  ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiSettingsHandler &  handler  :   g . SettingsHandlers )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( handler . TypeHash  = =  type_hash )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            return  & handler ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -12978,9 +12967,9 @@ void ImGui::ClearIniSettings() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * GImGui ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . SettingsIniData . clear ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  handler_n  =  0 ;  handler_n  <   g . SettingsHandlers . Size ;  handler_n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . SettingsHandlers [ handler_n ] . ClearAllFn )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . SettingsHandlers [ handler_n ]  . ClearAllFn ( & g ,  & g . SettingsHandlers [ handler_n ]  ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiSettingsHandler &  handler  :   g . SettingsHandlers )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( handler . ClearAllFn  ! =  NULL )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            handler . ClearAllFn ( & g ,  & handler ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  ImGui : : LoadIniSettingsFromDisk ( const  char *  ini_filename )  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13015,9 +13004,9 @@ void ImGui::LoadIniSettingsFromMemory(const char* ini_data, size_t ini_size) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Call pre-read handlers
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Some types will clear their data (e.g. dock information) some types will allow merge/override (window)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  handler_n  =  0 ;  handler_n  <   g . SettingsHandlers . Size ;  handler_n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . SettingsHandlers [ handler_n ] . ReadInitFn )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . SettingsHandlers [ handler_n ]  . ReadInitFn ( & g ,  & g . SettingsHandlers [ handler_n ]  ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiSettingsHandler &  handler  :   g . SettingsHandlers )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( handler . ReadInitFn  ! =  NULL )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            handler . ReadInitFn ( & g ,  & handler ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    void *  entry_data  =  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiSettingsHandler *  entry_handler  =  NULL ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13061,9 +13050,9 @@ void ImGui::LoadIniSettingsFromMemory(const char* ini_data, size_t ini_size) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    memcpy ( buf ,  ini_data ,  ini_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Call post-read handlers
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  handler_n  =  0 ;  handler_n  <   g . SettingsHandlers . Size ;  handler_n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . SettingsHandlers [ handler_n ] . ApplyAllFn )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . SettingsHandlers [ handler_n ]  . ApplyAllFn ( & g ,  & g . SettingsHandlers [ handler_n ]  ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiSettingsHandler &  handler  :   g . SettingsHandlers )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( handler . ApplyAllFn  ! =  NULL )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            handler . ApplyAllFn ( & g ,  & handler ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  ImGui : : SaveIniSettingsToDisk ( const  char *  ini_filename )  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -13089,11 +13078,8 @@ const char* ImGui::SaveIniSettingsToMemory(size_t* out_size) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . SettingsDirtyTimer  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . SettingsIniData . Buf . resize ( 0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . SettingsIniData . Buf . push_back ( 0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  handler_n  =  0 ;  handler_n  <  g . SettingsHandlers . Size ;  handler_n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiSettingsHandler *  handler  =  & g . SettingsHandlers [ handler_n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        handler - > WriteAllFn ( & g ,  handler ,  & g . SettingsIniData ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiSettingsHandler &  handler  :  g . SettingsHandlers )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        handler . WriteAllFn ( & g ,  & handler ,  & g . SettingsIniData ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( out_size )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        * out_size  =  ( size_t ) g . SettingsIniData . size ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  g . SettingsIniData . c_str ( ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13159,8 +13145,8 @@ void ImGui::ClearWindowSettings(const char* name) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  WindowSettingsHandler_ClearAll ( ImGuiContext *  ctx ,  ImGuiSettingsHandler * )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * ctx ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        g . Windows [ i ] - > SettingsOffset  =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiWindow *  window  :  g . Windows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > SettingsOffset  =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . SettingsWindows . clear ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13205,9 +13191,8 @@ static void WindowSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandl 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Gather data from windows that were active during this session
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // (if a window wasn't opened in this session we preserve its settings)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiContext &  g  =  * ctx ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiWindow *  window  :  g . Windows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiWindow *  window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > Flags  &  ImGuiWindowFlags_NoSavedSettings )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13286,10 +13271,8 @@ static void ImGui::UpdateViewportsNewFrame() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    main_viewport - > Pos  =  ImVec2 ( 0.0f ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    main_viewport - > Size  =  g . IO . DisplaySize ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Viewports . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiViewportP *  viewport  =  g . Viewports [ n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Lock down space taken by menu bars and status bars, reset the offset for fucntions like BeginMainMenuBar() to alter them again.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        viewport - > WorkOffsetMin  =  viewport - > BuildWorkOffsetMin ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        viewport - > WorkOffsetMax  =  viewport - > BuildWorkOffsetMax ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13507,9 +13490,8 @@ void ImGui::DebugRenderViewportThumbnail(ImDrawList* draw_list, ImGuiViewportP* 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVec2  off  =  bb . Min  -  viewport - > Pos  *  scale ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    float  alpha_mul  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DrawList - > AddRectFilled ( bb . Min ,  bb . Max ,  GetColorU32 ( ImGuiCol_Border ,  alpha_mul  *  0.40f ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiWindow *  thumb_window  :  g . Windows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiWindow *  thumb_window  =  g . Windows [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! thumb_window - > WasActive  | |  ( thumb_window - > Flags  &  ImGuiWindowFlags_ChildWindow ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13536,13 +13518,12 @@ static void RenderViewportsThumbnails() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // We don't display full monitor bounds (we could, but it often looks awkward), instead we display just enough to cover all of our viewports.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    float  SCALE  =  1.0f  /  8.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  bb_full ( FLT_MAX ,  FLT_MAX ,  - FLT_MAX ,  - FLT_MAX ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Viewports . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        bb_full . Add ( g . Viewports [ n ] - > GetMainRect ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        bb_full . Add ( viewport - > GetMainRect ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVec2  p  =  window - > DC . CursorPos ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVec2  off  =  p  -  bb_full . Min  *  SCALE ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <   g . Viewports . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGuiViewportP *  viewport  =  g . Viewports [ n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImRect  viewport_draw_bb ( off  +  ( viewport - > Pos )  *  SCALE ,  off  +  ( viewport - > Pos  +  viewport - > Size )  *  SCALE ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : DebugRenderViewportThumbnail ( window - > DrawList ,  viewport ,  viewport_draw_bb ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13650,9 +13631,8 @@ static void MetricsHelpMarker(const char* desc) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// [DEBUG] List fonts in a font atlas and display its texture
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  ImGui : : ShowFontAtlas ( ImFontAtlas *  atlas )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  <   atlas - > Fonts . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImFont *  font  :   atlas - > Fonts )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImFont *  font  =  atlas - > Fonts [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        PushID ( font ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        DebugNodeFont ( font ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        PopID ( ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13853,9 +13833,9 @@ void ImGui::ShowMetricsWindow(bool* p_open) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Here we display windows in their submitted order/hierarchy, however note that the Begin stack doesn't constitute a Parent<>Child relationship!
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImVector < ImGuiWindow * > &  temp_buffer  =  g . WindowsTempSortBuffer ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            temp_buffer . resize ( 0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( int  i  =  0 ;  i  <  g . Windows . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( g . Windows [ i ] - > LastFrameActive  +  1  > =  g . FrameCount )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    temp_buffer . push_back ( g . Windows [ i ] ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( ImGuiWindow *  window  :  g . Windows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( window - > LastFrameActive  +  1  > =  g . FrameCount )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    temp_buffer . push_back ( window ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            struct  Func  {  static  int  IMGUI_CDECL  WindowComparerByBeginOrder ( const  void *  lhs ,  const  void *  rhs )  {  return  ( ( int ) ( * ( const  ImGuiWindow *  const  * ) lhs ) - > BeginOrderWithinContext  -  ( * ( const  ImGuiWindow *  const * ) rhs ) - > BeginOrderWithinContext ) ;  }  } ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImQsort ( temp_buffer . Data ,  ( size_t ) temp_buffer . Size ,  sizeof ( ImGuiWindow * ) ,  Func : : WindowComparerByBeginOrder ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            DebugNodeWindowsListByBeginStackParent ( temp_buffer . Data ,  temp_buffer . Size ,  NULL ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -13867,18 +13847,15 @@ void ImGui::ShowMetricsWindow(bool* p_open) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // DrawLists
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    int  drawlist_count  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  viewport_i  =  0 ;  viewport_i  <   g . Viewports . Size ;  viewport_i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        drawlist_count  + =  g . Viewports [ viewport_i ]  - > DrawDataP . CmdLists . Size ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiViewportP *  viewport  :   g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        drawlist_count  + =  viewport - > DrawDataP . CmdLists . Size ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( TreeNode ( " DrawLists " ,  " DrawLists (%d) " ,  drawlist_count ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        Checkbox ( " Show ImDrawCmd mesh when hovering " ,  & cfg - > ShowDrawCmdMesh ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        Checkbox ( " Show ImDrawCmd bounding boxes when hovering " ,  & cfg - > ShowDrawCmdBoundingBoxes ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  viewport_i  =  0 ;  viewport_i  <  g . Viewports . Size ;  viewport_i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiViewportP *  viewport  =  g . Viewports [ viewport_i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( int  draw_list_i  =  0 ;  draw_list_i  <  viewport - > DrawDataP . CmdLists . Size ;  draw_list_i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                DebugNodeDrawList ( NULL ,  viewport ,  viewport - > DrawDataP . CmdLists [ draw_list_i ] ,  " DrawList " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( ImGuiViewportP *  viewport  :  g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( ImDrawList *  draw_list  :  viewport - > DrawDataP . CmdLists )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                DebugNodeDrawList ( NULL ,  viewport ,  draw_list ,  " DrawList " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        TreePop ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -13888,22 +13865,21 @@ void ImGui::ShowMetricsWindow(bool* p_open) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        Indent ( GetTreeNodeToLabelSpacing ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderViewportsThumbnails ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        Unindent ( GetTreeNodeToLabelSpacing ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  i  =  0 ;  i  <  g . Viewports . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            DebugNodeViewport ( g . Viewports [ i ] ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( ImGuiViewportP *  viewport  :  g . Viewports )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            DebugNodeViewport ( viewport ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        TreePop ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Details for Popups
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( TreeNode ( " Popups " ,  " Popups (%d) " ,  g . OpenPopupStack . Size ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  i  =  0 ;  i  <   g . OpenPopupStack . Size ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( const  ImGuiPopupData &  popup_data  :   g . OpenPopupStack )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // As it's difficult to interact with tree nodes while popups are open, we display everything inline.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            const  ImGuiPopupData *  popup_data  =  & g . OpenPopupStack [ i ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiWindow *  window  =  popup_data - > Window ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiWindow *  window  =  popup_data . Window ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            BulletText ( " PopupID: %08x, Window: '%s' (%s%s), BackupNavWindow '%s', ParentWindow '%s' " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                popup_data - > PopupId ,  window  ?  window - > Name  :  " NULL " ,  window  & &  ( window - > Flags  &  ImGuiWindowFlags_ChildWindow )  ?  " Child; "  :  " " ,  window  & &  ( window - > Flags  &  ImGuiWindowFlags_ChildMenu )  ?  " Menu; "  :  " " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                popup_data - > BackupNavWindow  ?  popup_data - > BackupNavWindow - > Name  :  " NULL " ,  window  & &  window - > ParentWindow  ?  window - > ParentWindow - > Name  :  " NULL " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                popup_data . PopupId ,  window  ?  window - > Name  :  " NULL " ,  window  & &  ( window - > Flags  &  ImGuiWindowFlags_ChildWindow )  ?  " Child; "  :  " " ,  window  & &  ( window - > Flags  &  ImGuiWindowFlags_ChildMenu )  ?  " Menu; "  :  " " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                popup_data . BackupNavWindow  ?  popup_data . BackupNavWindow - > Name  :  " NULL " ,  window  & &  window - > ParentWindow  ?  window - > ParentWindow - > Name  :  " NULL " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        TreePop ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -13973,8 +13949,8 @@ void ImGui::ShowMetricsWindow(bool* p_open) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        Text ( " SettingsDirtyTimer %.2f " ,  g . SettingsDirtyTimer ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( TreeNode ( " SettingsHandlers " ,  " Settings handlers: (%d) " ,  g . SettingsHandlers . Size ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( int  n  =  0 ;  n  <   g . SettingsHandlers . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                BulletText ( " \" %s \" " ,  g . SettingsHandlers [ n ] . TypeName ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( ImGuiSettingsHandler &  handler  :   g . SettingsHandlers )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                BulletText ( " \" %s \" " ,  handler . TypeName ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            TreePop ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( TreeNode ( " SettingsWindows " ,  " Settings packed data: Windows: %d bytes " ,  g . SettingsWindows . size ( ) ) )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -14138,9 +14114,8 @@ void ImGui::ShowMetricsWindow(bool* p_open) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Overlay: Display windows Rectangles and Begin Order
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( cfg - > ShowWindowsRects  | |  cfg - > ShowWindowsBeginOrder )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  n  =  0 ;  n  <   g . Windows . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( ImGuiWindow *  window  :   g . Windows )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImGuiWindow *  window  =  g . Windows [ n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! window - > WasActive )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImDrawList *  draw_list  =  GetForegroundDrawList ( window ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -14203,8 +14178,8 @@ void ImGui::DebugNodeColumns(ImGuiOldColumns* columns) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! TreeNode ( ( void * ) ( uintptr_t ) columns - > ID ,  " Columns Id: 0x%08X, Count: %d, Flags: 0x%04X " ,  columns - > ID ,  columns - > Count ,  columns - > Flags ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    BulletText ( " Width: %.1f (MinX: %.1f, MaxX: %.1f) " ,  columns - > OffMaxX  -  columns - > OffMinX ,  columns - > OffMinX ,  columns - > OffMaxX ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  column_n  =  0 ;  column_n  <   columns - > Columns . Size ;  column_n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        BulletText ( " Column %02d: OffsetNorm %.3f (= %.1f px) " ,  column_n ,  columns - > Columns [ column_n ] . OffsetNorm ,  GetColumnOffsetFromNorm ( columns ,  columns - > Columns [ column_n ] . OffsetNorm ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( ImGuiOldColumnData &  column  :   columns - > Columns )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        BulletText ( " Column %02d: OffsetNorm %.3f (= %.1f px) " ,  ( int ) columns - > Columns . index_from_ptr ( & column ) ,  column . OffsetNorm ,  GetColumnOffsetFromNorm ( columns ,  column . OffsetNorm ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    TreePop ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -14439,11 +14414,8 @@ void ImGui::DebugNodeStorage(ImGuiStorage* storage, const char* label) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! TreeNode ( label ,  " %s: %d entries, %d bytes " ,  label ,  storage - > Data . Size ,  storage - > Data . size_in_bytes ( ) ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  n  =  0 ;  n  <  storage - > Data . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        const  ImGuiStorage : : ImGuiStoragePair &  p  =  storage - > Data [ n ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( const  ImGuiStorage : : ImGuiStoragePair &  p  :  storage - > Data )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        BulletText ( " Key 0x%08X Value { i: %d } " ,  p . key ,  p . val_i ) ;  // Important: we currently don't store a type, real value may not be integer.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    TreePop ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -14501,8 +14473,8 @@ void ImGui::DebugNodeViewport(ImGuiViewportP* viewport) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ( flags  &  ImGuiViewportFlags_IsPlatformWindow )   ?  "  IsPlatformWindow "   :  " " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ( flags  &  ImGuiViewportFlags_IsPlatformMonitor )  ?  "  IsPlatformMonitor "  :  " " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ( flags  &  ImGuiViewportFlags_OwnedByApp )         ?  "  OwnedByApp "         :  " " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  draw_list_i  =  0 ;  draw_list_i  <   viewport - > DrawDataP . CmdLists . Size ;  draw_list_i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            DebugNodeDrawList ( NULL ,  viewport ,  viewport - > DrawDataP . CmdLists [ draw_list_i ]  ,  " DrawList " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( ImDrawList *  draw_list  :   viewport - > DrawDataP . CmdLists )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            DebugNodeDrawList ( NULL ,  viewport ,  draw_list ,  " DrawList " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        TreePop ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -14557,8 +14529,8 @@ void ImGui::DebugNodeWindow(ImGuiWindow* window, const char* label) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( window - > DC . ChildWindows . Size  >  0 )    {  DebugNodeWindowsList ( & window - > DC . ChildWindows ,  " ChildWindows " ) ;  }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( window - > ColumnsStorage . Size  >  0  & &  TreeNode ( " Columns " ,  " Columns sets (%d) " ,  window - > ColumnsStorage . Size ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  n  =  0 ;  n  <   window - > ColumnsStorage . Size ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            DebugNodeColumns ( & window - > C olumnsStorage [ n ] ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( ImGuiOldColumns &  columns  :   window - > ColumnsStorage )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            DebugNodeColumns ( & c olumns) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        TreePop ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    DebugNodeStorage ( & window - > StateStorage ,  " Storage " ) ;