@ -2973,19 +2973,6 @@ void ImGui::FocusableItemUnregister(ImGuiWindow* window)
window - > DC . FocusCounterTab - - ;
}
ImVec2 ImGui : : CalcItemSize ( ImVec2 size , float default_x , float default_y )
{
ImGuiContext & g = * GImGui ;
ImVec2 content_max ;
if ( size . x < 0.0f | | size . y < 0.0f )
content_max = g . CurrentWindow - > Pos + GetContentRegionMax ( ) ;
if ( size . x < = 0.0f )
size . x = ( size . x = = 0.0f ) ? default_x : ImMax ( content_max . x - g . CurrentWindow - > DC . CursorPos . x , 4.0f ) + size . x ;
if ( size . y < = 0.0f )
size . y = ( size . y = = 0.0f ) ? default_y : ImMax ( content_max . y - g . CurrentWindow - > DC . CursorPos . y , 4.0f ) + size . y ;
return size ;
}
float ImGui : : CalcWrapWidthForPos ( const ImVec2 & pos , float wrap_pos_x )
{
if ( wrap_pos_x < 0.0f )
@ -5785,13 +5772,13 @@ void ImGui::PopItemWidth()
window - > DC . ItemWidth = window - > DC . ItemWidthStack . empty ( ) ? window - > ItemWidthDefault : window - > DC . ItemWidthStack . back ( ) ;
}
// Calculate default item width given value passed to PushItemWidth()
float ImGui : : CalcItemWidth ( )
{
ImGuiWindow * window = GetCurrentWindowRead ( ) ;
float w = window - > DC . ItemWidth ;
if ( w < 0.0f )
{
// Align to a right-side limit. We include 1 frame padding in the calculation because this is how the width is always used (we add 2 frame padding to it), but we could move that responsibility to the widget as well.
float width_to_right_edge = GetContentRegionAvail ( ) . x ;
w = ImMax ( 1.0f , width_to_right_edge + w ) ;
}
@ -5799,6 +5786,22 @@ float ImGui::CalcItemWidth()
return w ;
}
// [Internal] Calculate full item size given user provided 'size' parameter and default width/height. Default width is often == CalcItemWidth().
// Those two functions CalcItemWidth vs CalcItemSize are awkwardly named because they are not fully symmetrical.
// Note that only CalcItemWidth() is publicly exposed.
ImVec2 ImGui : : CalcItemSize ( ImVec2 size , float default_w , float default_h )
{
ImGuiWindow * window = GetCurrentWindowRead ( ) ;
ImVec2 content_max ;
if ( size . x < 0.0f | | size . y < 0.0f )
content_max = window - > Pos + GetContentRegionMax ( ) ;
if ( size . x < = 0.0f )
size . x = ( size . x = = 0.0f ) ? default_w : ImMax ( content_max . x - window - > DC . CursorPos . x , 4.0f ) + size . x ;
if ( size . y < = 0.0f )
size . y = ( size . y = = 0.0f ) ? default_h : ImMax ( content_max . y - window - > DC . CursorPos . y , 4.0f ) + size . y ;
return size ;
}
void ImGui : : SetCurrentFont ( ImFont * font )
{
ImGuiContext & g = * GImGui ;