@ -1089,11 +1089,11 @@ ImGuiContext* GImGui = NULL;
// If you use DLL hotreloading you might need to call SetAllocatorFunctions() after reloading code from this file.
// If you use DLL hotreloading you might need to call SetAllocatorFunctions() after reloading code from this file.
// Otherwise, you probably don't want to modify them mid-program, and if you use global/static e.g. ImVector<> instances you may need to keep them accessible during program destruction.
// Otherwise, you probably don't want to modify them mid-program, and if you use global/static e.g. ImVector<> instances you may need to keep them accessible during program destruction.
# ifndef IMGUI_DISABLE_DEFAULT_ALLOCATORS
# ifndef IMGUI_DISABLE_DEFAULT_ALLOCATORS
static void * MallocWrapper ( size_t size , void * user_data ) { ( void ) user_data ; return malloc ( size ) ; }
static void * MallocWrapper ( size_t size , void * user_data ) { IM_UNUSED ( user_data ) ; return malloc ( size ) ; }
static void FreeWrapper ( void * ptr , void * user_data ) { ( void ) user_data ; free ( ptr ) ; }
static void FreeWrapper ( void * ptr , void * user_data ) { IM_UNUSED ( user_data ) ; free ( ptr ) ; }
# else
# else
static void * MallocWrapper ( size_t size , void * user_data ) { ( void ) user_data ; ( void ) size ; IM_ASSERT ( 0 ) ; return NULL ; }
static void * MallocWrapper ( size_t size , void * user_data ) { IM_UNUSED ( user_data ) ; IM_UNUSED ( size ) ; IM_ASSERT ( 0 ) ; return NULL ; }
static void FreeWrapper ( void * ptr , void * user_data ) { ( void ) user_data ; ( void ) ptr ; IM_ASSERT ( 0 ) ; }
static void FreeWrapper ( void * ptr , void * user_data ) { IM_UNUSED ( user_data ) ; IM_UNUSED ( ptr ) ; IM_ASSERT ( 0 ) ; }
# endif
# endif
static void * ( * GImAllocatorAllocFunc ) ( size_t size , void * user_data ) = MallocWrapper ;
static void * ( * GImAllocatorAllocFunc ) ( size_t size , void * user_data ) = MallocWrapper ;
@ -2762,9 +2762,9 @@ void ImGui::MarkItemEdited(ImGuiID id)
{
{
// This marking is solely to be able to provide info for IsItemDeactivatedAfterEdit().
// This marking is solely to be able to provide info for IsItemDeactivatedAfterEdit().
// ActiveId might have been released by the time we call this (as in the typical press/release button behavior) but still need need to fill the data.
// ActiveId might have been released by the time we call this (as in the typical press/release button behavior) but still need need to fill the data.
( void ) id ; // Avoid unused variable warnings when asserts are compiled out.
ImGuiContext & g = * GImGui ;
ImGuiContext & g = * GImGui ;
IM_ASSERT ( g . ActiveId = = id | | g . ActiveId = = 0 | | g . DragDropActive ) ;
IM_ASSERT ( g . ActiveId = = id | | g . ActiveId = = 0 | | g . DragDropActive ) ;
IM_UNUSED ( id ) ; // Avoid unused variable warnings when asserts are compiled out.
//IM_ASSERT(g.CurrentWindow->DC.LastItemId == id);
//IM_ASSERT(g.CurrentWindow->DC.LastItemId == id);
g . ActiveIdHasBeenEdited = true ;
g . ActiveIdHasBeenEdited = true ;
g . CurrentWindow - > DC . LastItemStatusFlags | = ImGuiItemStatusFlags_Edited ;
g . CurrentWindow - > DC . LastItemStatusFlags | = ImGuiItemStatusFlags_Edited ;
@ -4338,7 +4338,8 @@ int ImGui::CalcTypematicPressedRepeatAmount(float t, float t_prev, float repeat_
int ImGui : : GetKeyPressedAmount ( int key_index , float repeat_delay , float repeat_rate )
int ImGui : : GetKeyPressedAmount ( int key_index , float repeat_delay , float repeat_rate )
{
{
ImGuiContext & g = * GImGui ;
ImGuiContext & g = * GImGui ;
if ( key_index < 0 ) return false ;
if ( key_index < 0 )
return 0 ;
IM_ASSERT ( key_index > = 0 & & key_index < IM_ARRAYSIZE ( g . IO . KeysDown ) ) ;
IM_ASSERT ( key_index > = 0 & & key_index < IM_ARRAYSIZE ( g . IO . KeysDown ) ) ;
const float t = g . IO . KeysDownDuration [ key_index ] ;
const float t = g . IO . KeysDownDuration [ key_index ] ;
return CalcTypematicPressedRepeatAmount ( t , t - g . IO . DeltaTime , repeat_delay , repeat_rate ) ;
return CalcTypematicPressedRepeatAmount ( t , t - g . IO . DeltaTime , repeat_delay , repeat_rate ) ;
@ -4347,7 +4348,8 @@ int ImGui::GetKeyPressedAmount(int key_index, float repeat_delay, float repeat_r
bool ImGui : : IsKeyPressed ( int user_key_index , bool repeat )
bool ImGui : : IsKeyPressed ( int user_key_index , bool repeat )
{
{
ImGuiContext & g = * GImGui ;
ImGuiContext & g = * GImGui ;
if ( user_key_index < 0 ) return false ;
if ( user_key_index < 0 )
return false ;
IM_ASSERT ( user_key_index > = 0 & & user_key_index < IM_ARRAYSIZE ( g . IO . KeysDown ) ) ;
IM_ASSERT ( user_key_index > = 0 & & user_key_index < IM_ARRAYSIZE ( g . IO . KeysDown ) ) ;
const float t = g . IO . KeysDownDuration [ user_key_index ] ;
const float t = g . IO . KeysDownDuration [ user_key_index ] ;
if ( t = = 0.0f )
if ( t = = 0.0f )
@ -4438,13 +4440,12 @@ ImVec2 ImGui::GetMousePosOnOpeningCurrentPopup()
return g . IO . MousePos ;
return g . IO . MousePos ;
}
}
// We typically use ImVec2(-FLT_MAX,-FLT_MAX) to denote an invalid mouse position
// We typically use ImVec2(-FLT_MAX,-FLT_MAX) to denote an invalid mouse position .
bool ImGui : : IsMousePosValid ( const ImVec2 * mouse_pos )
bool ImGui : : IsMousePosValid ( const ImVec2 * mouse_pos )
{
{
if ( mouse_pos = = NULL )
mouse_pos = & GImGui - > IO . MousePos ;
const float MOUSE_INVALID = - 256000.0f ;
const float MOUSE_INVALID = - 256000.0f ;
return mouse_pos - > x > = MOUSE_INVALID & & mouse_pos - > y > = MOUSE_INVALID ;
ImVec2 p = mouse_pos ? * mouse_pos : GImGui - > IO . MousePos ;
return p . x > = MOUSE_INVALID & & p . y > = MOUSE_INVALID ;
}
}
// Return the delta from the initial clicking position.
// Return the delta from the initial clicking position.
@ -5166,7 +5167,10 @@ void ImGui::UpdateWindowParentAndRootLinks(ImGuiWindow* window, ImGuiWindowFlags
if ( parent_window & & ! ( flags & ImGuiWindowFlags_Modal ) & & ( flags & ( ImGuiWindowFlags_ChildWindow | ImGuiWindowFlags_Popup ) ) )
if ( parent_window & & ! ( flags & ImGuiWindowFlags_Modal ) & & ( flags & ( ImGuiWindowFlags_ChildWindow | ImGuiWindowFlags_Popup ) ) )
window - > RootWindowForTitleBarHighlight = parent_window - > RootWindowForTitleBarHighlight ;
window - > RootWindowForTitleBarHighlight = parent_window - > RootWindowForTitleBarHighlight ;
while ( window - > RootWindowForNav - > Flags & ImGuiWindowFlags_NavFlattened )
while ( window - > RootWindowForNav - > Flags & ImGuiWindowFlags_NavFlattened )
{
IM_ASSERT ( window - > RootWindowForNav - > ParentWindow ! = NULL ) ;
window - > RootWindowForNav = window - > RootWindowForNav - > ParentWindow ;
window - > RootWindowForNav = window - > RootWindowForNav - > ParentWindow ;
}
}
}
// Push a new ImGui window to add widgets to.
// Push a new ImGui window to add widgets to.
@ -5468,7 +5472,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
// Position child window
// Position child window
if ( flags & ImGuiWindowFlags_ChildWindow )
if ( flags & ImGuiWindowFlags_ChildWindow )
{
{
IM_ASSERT ( parent_window - > Active ) ;
IM_ASSERT ( parent_window & & parent_window - > Active ) ;
window - > BeginOrderWithinParent = ( short ) parent_window - > DC . ChildWindows . Size ;
window - > BeginOrderWithinParent = ( short ) parent_window - > DC . ChildWindows . Size ;
parent_window - > DC . ChildWindows . push_back ( window ) ;
parent_window - > DC . ChildWindows . push_back ( window ) ;
if ( ! ( flags & ImGuiWindowFlags_Popup ) & & ! window_pos_set_by_api & & ! window_is_child_tooltip )
if ( ! ( flags & ImGuiWindowFlags_Popup ) & & ! window_pos_set_by_api & & ! window_is_child_tooltip )
@ -7525,7 +7529,7 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags fla
void ImGui : : EndPopup ( )
void ImGui : : EndPopup ( )
{
{
ImGuiContext & g = * GImGui ; ( void ) g ;
ImGuiContext & g = * GImGui ;
IM_ASSERT ( g . CurrentWindow - > Flags & ImGuiWindowFlags_Popup ) ; // Mismatched BeginPopup()/EndPopup() calls
IM_ASSERT ( g . CurrentWindow - > Flags & ImGuiWindowFlags_Popup ) ; // Mismatched BeginPopup()/EndPopup() calls
IM_ASSERT ( g . BeginPopupStack . Size > 0 ) ;
IM_ASSERT ( g . BeginPopupStack . Size > 0 ) ;
@ -8936,9 +8940,8 @@ static void ImGui::NavUpdate()
NavUpdateWindowing ( ) ;
NavUpdateWindowing ( ) ;
// Set output flags for user application
// Set output flags for user application
// FIXME: g.NavInitRequest is always false at this point, investigate the intent of operation done here.
g . IO . NavActive = ( nav_keyboard_active | | nav_gamepad_active ) & & g . NavWindow & & ! ( g . NavWindow - > Flags & ImGuiWindowFlags_NoNavInputs ) ;
g . IO . NavActive = ( nav_keyboard_active | | nav_gamepad_active ) & & g . NavWindow & & ! ( g . NavWindow - > Flags & ImGuiWindowFlags_NoNavInputs ) ;
g . IO . NavVisible = ( g . IO . NavActive & & g . NavId ! = 0 & & ! g . NavDisableHighlight ) | | ( g . NavWindowingTarget ! = NULL ) | | g . NavInitRequest ;
g . IO . NavVisible = ( g . IO . NavActive & & g . NavId ! = 0 & & ! g . NavDisableHighlight ) | | ( g . NavWindowingTarget ! = NULL ) ;
// Process NavCancel input (to close a popup, get back to parent, clear focus)
// Process NavCancel input (to close a popup, get back to parent, clear focus)
if ( IsNavInputPressed ( ImGuiNavInput_Cancel , ImGuiInputReadMode_Pressed ) )
if ( IsNavInputPressed ( ImGuiNavInput_Cancel , ImGuiInputReadMode_Pressed ) )
@ -13712,7 +13715,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
{
{
ImDrawVert & v = draw_list - > VtxBuffer [ idx_buffer ? idx_buffer [ vtx_i ] : vtx_i ] ;
ImDrawVert & v = draw_list - > VtxBuffer [ idx_buffer ? idx_buffer [ vtx_i ] : vtx_i ] ;
triangles_pos [ n ] = v . pos ;
triangles_pos [ n ] = v . pos ;
buf_p + = ImFormatString ( buf_p , ( int ) ( buf_end - buf_p ) , " %s %04d: pos (%8.2f,%8.2f), uv (%.6f,%.6f), col %08X \n " , ( n = = 0 ) ? " vtx " : " " , vtx_i , v . pos . x , v . pos . y , v . uv . x , v . uv . y , v . col ) ;
buf_p + = ImFormatString ( buf_p , buf_end - buf_p , " %s %04d: pos (%8.2f,%8.2f), uv (%.6f,%.6f), col %08X \n " , ( n = = 0 ) ? " vtx " : " " , vtx_i , v . pos . x , v . pos . y , v . uv . x , v . uv . y , v . col ) ;
}
}
ImGui : : Selectable ( buf , false ) ;
ImGui : : Selectable ( buf , false ) ;
if ( overlay_draw_list & & ImGui : : IsItemHovered ( ) )
if ( overlay_draw_list & & ImGui : : IsItemHovered ( ) )
@ -13923,7 +13926,7 @@ void ImGui::ShowDockingDebug()
static void NodeTabBar ( ImGuiTabBar * tab_bar )
static void NodeTabBar ( ImGuiTabBar * tab_bar )
{
{
// Note that standalone tab bars (not associated to docking/windows functionality) currently hold no discerna ble strings.
// Standalone tab bars (not associated to docking/windows functionality) currently hold no discerni ble strings.
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 ) ;