@ -2889,6 +2889,10 @@ ImGuiID ImGuiWindow::GetID(const char* str, const char* str_end)
ImGuiID seed = IDStack . back ( ) ;
ImGuiID seed = IDStack . back ( ) ;
ImGuiID id = ImHashStr ( str , str_end ? ( str_end - str ) : 0 , seed ) ;
ImGuiID id = ImHashStr ( str , str_end ? ( str_end - str ) : 0 , seed ) ;
ImGui : : KeepAliveID ( id ) ;
ImGui : : KeepAliveID ( id ) ;
# ifdef IMGUI_ENABLE_TEST_ENGINE
ImGuiContext & g = * GImGui ;
IMGUI_TEST_ENGINE_ID_INFO2 ( id , ImGuiDataType_String , str , str_end ) ;
# endif
return id ;
return id ;
}
}
@ -2897,6 +2901,10 @@ ImGuiID ImGuiWindow::GetID(const void* ptr)
ImGuiID seed = IDStack . back ( ) ;
ImGuiID seed = IDStack . back ( ) ;
ImGuiID id = ImHashData ( & ptr , sizeof ( void * ) , seed ) ;
ImGuiID id = ImHashData ( & ptr , sizeof ( void * ) , seed ) ;
ImGui : : KeepAliveID ( id ) ;
ImGui : : KeepAliveID ( id ) ;
# ifdef IMGUI_ENABLE_TEST_ENGINE
ImGuiContext & g = * GImGui ;
IMGUI_TEST_ENGINE_ID_INFO ( id , ImGuiDataType_Pointer , ptr ) ;
# endif
return id ;
return id ;
}
}
@ -2905,25 +2913,44 @@ ImGuiID ImGuiWindow::GetID(int n)
ImGuiID seed = IDStack . back ( ) ;
ImGuiID seed = IDStack . back ( ) ;
ImGuiID id = ImHashData ( & n , sizeof ( n ) , seed ) ;
ImGuiID id = ImHashData ( & n , sizeof ( n ) , seed ) ;
ImGui : : KeepAliveID ( id ) ;
ImGui : : KeepAliveID ( id ) ;
# ifdef IMGUI_ENABLE_TEST_ENGINE
ImGuiContext & g = * GImGui ;
IMGUI_TEST_ENGINE_ID_INFO ( id , ImGuiDataType_S32 , ( intptr_t ) n ) ;
# endif
return id ;
return id ;
}
}
ImGuiID ImGuiWindow : : GetIDNoKeepAlive ( const char * str , const char * str_end )
ImGuiID ImGuiWindow : : GetIDNoKeepAlive ( const char * str , const char * str_end )
{
{
ImGuiID seed = IDStack . back ( ) ;
ImGuiID seed = IDStack . back ( ) ;
return ImHashStr ( str , str_end ? ( str_end - str ) : 0 , seed ) ;
ImGuiID id = ImHashStr ( str , str_end ? ( str_end - str ) : 0 , seed ) ;
# ifdef IMGUI_ENABLE_TEST_ENGINE
ImGuiContext & g = * GImGui ;
IMGUI_TEST_ENGINE_ID_INFO2 ( id , ImGuiDataType_String , str , str_end ) ;
# endif
return id ;
}
}
ImGuiID ImGuiWindow : : GetIDNoKeepAlive ( const void * ptr )
ImGuiID ImGuiWindow : : GetIDNoKeepAlive ( const void * ptr )
{
{
ImGuiID seed = IDStack . back ( ) ;
ImGuiID seed = IDStack . back ( ) ;
return ImHashData ( & ptr , sizeof ( void * ) , seed ) ;
ImGuiID id = ImHashData ( & ptr , sizeof ( void * ) , seed ) ;
# ifdef IMGUI_ENABLE_TEST_ENGINE
ImGuiContext & g = * GImGui ;
IMGUI_TEST_ENGINE_ID_INFO ( id , ImGuiDataType_Pointer , ptr ) ;
# endif
return id ;
}
}
ImGuiID ImGuiWindow : : GetIDNoKeepAlive ( int n )
ImGuiID ImGuiWindow : : GetIDNoKeepAlive ( int n )
{
{
ImGuiID seed = IDStack . back ( ) ;
ImGuiID seed = IDStack . back ( ) ;
return ImHashData ( & n , sizeof ( n ) , seed ) ;
ImGuiID id = ImHashData ( & n , sizeof ( n ) , seed ) ;
# ifdef IMGUI_ENABLE_TEST_ENGINE
ImGuiContext & g = * GImGui ;
IMGUI_TEST_ENGINE_ID_INFO ( id , ImGuiDataType_S32 , ( intptr_t ) n ) ;
# endif
return id ;
}
}
// This is only used in rare/specific situations to manufacture an ID out of nowhere.
// This is only used in rare/specific situations to manufacture an ID out of nowhere.
@ -6597,7 +6624,6 @@ void ImGui::PushFocusScope(ImGuiID id)
ImGuiWindow * window = g . CurrentWindow ;
ImGuiWindow * window = g . CurrentWindow ;
window - > IDStack . push_back ( window - > DC . NavFocusScopeIdCurrent ) ;
window - > IDStack . push_back ( window - > DC . NavFocusScopeIdCurrent ) ;
window - > DC . NavFocusScopeIdCurrent = id ;
window - > DC . NavFocusScopeIdCurrent = id ;
IMGUI_TEST_ENGINE_PUSH_ID ( id , ImGuiDataType_ID , NULL ) ;
}
}
void ImGui : : PopFocusScope ( )
void ImGui : : PopFocusScope ( )
@ -6653,7 +6679,6 @@ void ImGui::PushID(const char* str_id)
ImGuiWindow * window = g . CurrentWindow ;
ImGuiWindow * window = g . CurrentWindow ;
ImGuiID id = window - > GetIDNoKeepAlive ( str_id ) ;
ImGuiID id = window - > GetIDNoKeepAlive ( str_id ) ;
window - > IDStack . push_back ( id ) ;
window - > IDStack . push_back ( id ) ;
IMGUI_TEST_ENGINE_PUSH_ID ( id , ImGuiDataType_String , str_id ) ;
}
}
void ImGui : : PushID ( const char * str_id_begin , const char * str_id_end )
void ImGui : : PushID ( const char * str_id_begin , const char * str_id_end )
@ -6662,7 +6687,6 @@ void ImGui::PushID(const char* str_id_begin, const char* str_id_end)
ImGuiWindow * window = g . CurrentWindow ;
ImGuiWindow * window = g . CurrentWindow ;
ImGuiID id = window - > GetIDNoKeepAlive ( str_id_begin , str_id_end ) ;
ImGuiID id = window - > GetIDNoKeepAlive ( str_id_begin , str_id_end ) ;
window - > IDStack . push_back ( id ) ;
window - > IDStack . push_back ( id ) ;
IMGUI_TEST_ENGINE_PUSH_ID2 ( id , ImGuiDataType_String , str_id_begin , str_id_end ) ;
}
}
void ImGui : : PushID ( const void * ptr_id )
void ImGui : : PushID ( const void * ptr_id )
@ -6671,7 +6695,6 @@ void ImGui::PushID(const void* ptr_id)
ImGuiWindow * window = g . CurrentWindow ;
ImGuiWindow * window = g . CurrentWindow ;
ImGuiID id = window - > GetIDNoKeepAlive ( ptr_id ) ;
ImGuiID id = window - > GetIDNoKeepAlive ( ptr_id ) ;
window - > IDStack . push_back ( id ) ;
window - > IDStack . push_back ( id ) ;
IMGUI_TEST_ENGINE_PUSH_ID ( id , ImGuiDataType_Pointer , ptr_id ) ;
}
}
void ImGui : : PushID ( int int_id )
void ImGui : : PushID ( int int_id )
@ -6680,7 +6703,6 @@ void ImGui::PushID(int int_id)
ImGuiWindow * window = g . CurrentWindow ;
ImGuiWindow * window = g . CurrentWindow ;
ImGuiID id = window - > GetIDNoKeepAlive ( int_id ) ;
ImGuiID id = window - > GetIDNoKeepAlive ( int_id ) ;
window - > IDStack . push_back ( id ) ;
window - > IDStack . push_back ( id ) ;
IMGUI_TEST_ENGINE_PUSH_ID ( id , ImGuiDataType_S32 , ( intptr_t ) int_id ) ;
}
}
// Push a given id value ignoring the ID stack as a seed.
// Push a given id value ignoring the ID stack as a seed.
@ -6689,7 +6711,6 @@ void ImGui::PushOverrideID(ImGuiID id)
ImGuiContext & g = * GImGui ;
ImGuiContext & g = * GImGui ;
ImGuiWindow * window = g . CurrentWindow ;
ImGuiWindow * window = g . CurrentWindow ;
window - > IDStack . push_back ( id ) ;
window - > IDStack . push_back ( id ) ;
IMGUI_TEST_ENGINE_PUSH_ID ( id , ImGuiDataType_ID , NULL ) ;
}
}
void ImGui : : PopID ( )
void ImGui : : PopID ( )