@ -10413,7 +10413,8 @@ void ImGui::ShowMetricsWindow(bool* p_open)
{
{
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 + + )
ImGui : : Text ( " (In front-to-back order:) " ) ;
for ( int i = windows . Size - 1 ; i > = 0 ; i - - ) // Iterate front to back
{
{
ImGui : : PushID ( windows [ i ] ) ;
ImGui : : PushID ( windows [ i ] ) ;
Funcs : : NodeWindow ( windows [ i ] , " Window " ) ;
Funcs : : NodeWindow ( windows [ i ] , " Window " ) ;
@ -10429,14 +10430,18 @@ void ImGui::ShowMetricsWindow(bool* p_open)
ImGui : : BulletText ( " %s: NULL " , label ) ;
ImGui : : BulletText ( " %s: NULL " , label ) ;
return ;
return ;
}
}
bool open = ImGui : : TreeNode ( label , " %s '%s', %d @ 0x%p " , label , window - > Name , ( window - > Active | | window - > WasActive ) , window ) ;
if ( ImGui : : IsItemHovered ( ) & & window - > WasActive )
ImGuiContext & g = * GImGui ;
ImGui : : GetForegroundDrawList ( ) - > AddRect ( window - > Pos , window - > Pos + window - > Size , IM_COL32 ( 255 , 255 , 0 , 255 ) ) ;
const bool is_active = window - > WasActive ;
ImGuiTreeNodeFlags tree_node_flags = ( window = = g . NavWindow ) ? ImGuiTreeNodeFlags_Selected : ImGuiTreeNodeFlags_None ;
if ( ! is_active ) { PushStyleColor ( ImGuiCol_Text , GetStyleColorVec4 ( ImGuiCol_TextDisabled ) ) ; }
const bool open = ImGui : : TreeNodeEx ( label , tree_node_flags , " %s '%s'%s " , label , window - > Name , is_active ? " " : " *Inactive* " ) ;
if ( ! is_active ) { PopStyleColor ( ) ; }
if ( ImGui : : IsItemHovered ( ) & & is_active )
ImGui : : GetForegroundDrawList ( window ) - > AddRect ( window - > Pos , window - > Pos + window - > Size , IM_COL32 ( 255 , 255 , 0 , 255 ) ) ;
if ( ! open )
if ( ! open )
return ;
return ;
if ( ! window - > WasActive )
ImGui : : TextDisabled ( " Note: window is not currently visible. " ) ;
if ( window - > MemoryCompacted )
if ( window - > MemoryCompacted )
ImGui : : TextDisabled ( " Note: some memory buffers have been compacted/freed. " ) ;
ImGui : : TextDisabled ( " Note: some memory buffers have been compacted/freed. " ) ;
@ -10481,9 +10486,13 @@ void ImGui::ShowMetricsWindow(bool* p_open)
char buf [ 256 ] ;
char buf [ 256 ] ;
char * p = buf ;
char * p = buf ;
const char * buf_end = buf + IM_ARRAYSIZE ( buf ) ;
const char * buf_end = buf + IM_ARRAYSIZE ( buf ) ;
p + = ImFormatString ( p , buf_end - p , " TabBar (%d tabs)%s " , tab_bar - > Tabs . Size , ( tab_bar - > PrevFrameVisible < ImGui : : GetFrameCount ( ) - 2 ) ? " *Inactive* " : " " ) ;
const bool is_active = ( tab_bar - > PrevFrameVisible > = ImGui : : GetFrameCount ( ) - 2 ) ;
p + = ImFormatString ( p , buf_end - p , " Tab Bar 0x%08X (%d tabs)%s " , tab_bar - > ID , tab_bar - > Tabs . Size , is_active ? " " : " *Inactive* " ) ;
IM_UNUSED ( p ) ;
IM_UNUSED ( p ) ;
if ( ImGui : : TreeNode ( tab_bar , " %s " , buf ) )
if ( ! is_active ) { PushStyleColor ( ImGuiCol_Text , GetStyleColorVec4 ( ImGuiCol_TextDisabled ) ) ; }
bool open = ImGui : : TreeNode ( tab_bar , " %s " , buf ) ;
if ( ! is_active ) { PopStyleColor ( ) ; }
if ( open )
{
{
for ( int tab_n = 0 ; tab_n < tab_bar - > Tabs . Size ; tab_n + + )
for ( int tab_n = 0 ; tab_n < tab_bar - > Tabs . Size ; tab_n + + )
{
{
@ -10635,8 +10644,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
if ( ImGui : : TreeNode ( " SettingsIniData " , " Settings unpacked data (.ini): %d bytes " , g . SettingsIniData . size ( ) ) )
if ( ImGui : : TreeNode ( " SettingsIniData " , " Settings unpacked data (.ini): %d bytes " , g . SettingsIniData . size ( ) ) )
{
{
char * buf = ( char * ) ( void * ) ( g . SettingsIniData . Buf . Data ? g . SettingsIniData . Buf . Data : " " ) ;
ImGui : : InputTextMultiline ( " ##Ini " , ( char * ) ( void * ) g . SettingsIniData . c_str ( ) , g . SettingsIniData . Buf . Size , ImVec2 ( - FLT_MIN , 0.0f ) , ImGuiInputTextFlags_ReadOnly ) ;
ImGui : : InputTextMultiline ( " ##Ini " , buf , g . SettingsIniData . Buf . Size , ImVec2 ( - FLT_MIN , 0.0f ) , ImGuiInputTextFlags_ReadOnly ) ;
ImGui : : TreePop ( ) ;
ImGui : : TreePop ( ) ;
}
}
ImGui : : TreePop ( ) ;
ImGui : : TreePop ( ) ;
@ -10646,21 +10654,35 @@ void ImGui::ShowMetricsWindow(bool* p_open)
if ( ImGui : : TreeNode ( " Internal state " ) )
if ( ImGui : : TreeNode ( " Internal state " ) )
{
{
const char * input_source_names [ ] = { " None " , " Mouse " , " Nav " , " NavKeyboard " , " NavGamepad " } ; IM_ASSERT ( IM_ARRAYSIZE ( input_source_names ) = = ImGuiInputSource_COUNT ) ;
const char * input_source_names [ ] = { " None " , " Mouse " , " Nav " , " NavKeyboard " , " NavGamepad " } ; IM_ASSERT ( IM_ARRAYSIZE ( input_source_names ) = = ImGuiInputSource_COUNT ) ;
ImGui : : Text ( " WINDOWING " ) ;
ImGui : : Indent ( ) ;
ImGui : : Text ( " HoveredWindow: '%s' " , g . HoveredWindow ? g . HoveredWindow - > Name : " NULL " ) ;
ImGui : : Text ( " HoveredWindow: '%s' " , g . HoveredWindow ? g . HoveredWindow - > Name : " NULL " ) ;
ImGui : : Text ( " HoveredRootWindow: '%s' " , g . HoveredRootWindow ? g . HoveredRootWindow - > Name : " NULL " ) ;
ImGui : : Text ( " HoveredRootWindow: '%s' " , g . HoveredRootWindow ? g . HoveredRootWindow - > Name : " NULL " ) ;
ImGui : : Text ( " HoveredWindowUnderMovingWindow: '%s' " , g . HoveredWindowUnderMovingWindow ? g . HoveredWindowUnderMovingWindow - > Name : " NULL " ) ;
ImGui : : Text ( " HoveredWindowUnderMovingWindow: '%s' " , g . HoveredWindowUnderMovingWindow ? g . HoveredWindowUnderMovingWindow - > Name : " NULL " ) ;
ImGui : : Text ( " HoveredId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d " , g . HoveredId , g . HoveredIdPreviousFrame , g . HoveredIdTimer , g . HoveredIdAllowOverlap ) ; // Data is "in-flight" so depending on when the Metrics window is called we may see current frame information or not
ImGui : : Text ( " MovingWindow: '%s' " , g . MovingWindow ? g . MovingWindow - > Name : " NULL " ) ;
ImGui : : Unindent ( ) ;
ImGui : : Text ( " ITEMS " ) ;
ImGui : : Indent ( ) ;
ImGui : : Text ( " ActiveId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d, Source: %s " , g . ActiveId , g . ActiveIdPreviousFrame , g . ActiveIdTimer , g . ActiveIdAllowOverlap , input_source_names [ g . ActiveIdSource ] ) ;
ImGui : : Text ( " ActiveId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d, Source: %s " , g . ActiveId , g . ActiveIdPreviousFrame , g . ActiveIdTimer , g . ActiveIdAllowOverlap , input_source_names [ g . ActiveIdSource ] ) ;
ImGui : : Text ( " ActiveIdWindow: '%s' " , g . ActiveIdWindow ? g . ActiveIdWindow - > Name : " NULL " ) ;
ImGui : : Text ( " ActiveIdWindow: '%s' " , g . ActiveIdWindow ? g . ActiveIdWindow - > Name : " NULL " ) ;
ImGui : : Text ( " MovingWindow: '%s' " , g . MovingWindow ? g . MovingWindow - > Name : " NULL " ) ;
ImGui : : Text ( " HoveredId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d " , g . HoveredId , g . HoveredIdPreviousFrame , g . HoveredIdTimer , g . HoveredIdAllowOverlap ) ; // Data is "in-flight" so depending on when the Metrics window is called we may see current frame information or not
ImGui : : Text ( " DragDrop: %d, SourceId = 0x%08X, Payload \" %s \" (%d bytes) " , g . DragDropActive , g . DragDropPayload . SourceId , g . DragDropPayload . DataType , g . DragDropPayload . DataSize ) ;
ImGui : : Unindent ( ) ;
ImGui : : Text ( " NAV,FOCUS " ) ;
ImGui : : Indent ( ) ;
ImGui : : Text ( " NavWindow: '%s' " , g . NavWindow ? g . NavWindow - > Name : " NULL " ) ;
ImGui : : Text ( " NavWindow: '%s' " , g . NavWindow ? g . NavWindow - > Name : " NULL " ) ;
ImGui : : Text ( " NavId: 0x%08X, NavLayer: %d " , g . NavId , g . NavLayer ) ;
ImGui : : Text ( " NavId: 0x%08X, NavLayer: %d " , g . NavId , g . NavLayer ) ;
ImGui : : Text ( " NavInputSource: %s " , input_source_names [ g . NavInputSource ] ) ;
ImGui : : Text ( " NavInputSource: %s " , input_source_names [ g . NavInputSource ] ) ;
ImGui : : Text ( " NavActive: %d, NavVisible: %d " , g . IO . NavActive , g . IO . NavVisible ) ;
ImGui : : Text ( " NavActive: %d, NavVisible: %d " , g . IO . NavActive , g . IO . NavVisible ) ;
ImGui : : Text ( " NavActivateId: 0x%08X, NavInputId: 0x%08X " , g . NavActivateId , g . NavInputId ) ;
ImGui : : Text ( " NavActivateId: 0x%08X, NavInputId: 0x%08X " , g . NavActivateId , g . NavInputId ) ;
ImGui : : Text ( " NavDisableHighlight: %d, NavDisableMouseHover: %d " , g . NavDisableHighlight , g . NavDisableMouseHover ) ;
ImGui : : Text ( " NavDisableHighlight: %d, NavDisableMouseHover: %d " , g . NavDisableHighlight , g . NavDisableMouseHover ) ;
ImGui : : Text ( " NavFocusScopeId = 0x%08X " , g . NavFocusScopeId ) ;
ImGui : : Text ( " NavWindowingTarget: '%s' " , g . NavWindowingTarget ? g . NavWindowingTarget - > Name : " NULL " ) ;
ImGui : : Text ( " NavWindowingTarget: '%s' " , g . NavWindowingTarget ? g . NavWindowingTarget - > Name : " NULL " ) ;
ImGui : : Text ( " DragDrop: %d, SourceId = 0x%08X, Payload \" %s \" (%d bytes) " , g . DragDropActive , g . DragDropPayload . SourceId , g . DragDropPayload . DataType , g . DragDropPayload . DataSize ) ;
ImGui : : Unindent ( ) ;
ImGui : : TreePop ( ) ;
ImGui : : TreePop ( ) ;
}
}