@ -4857,7 +4857,7 @@ static ImGuiWindow* CreateNewWindow(const char* name, ImVec2 size, ImGuiWindowFl
return window ;
}
static ImVec2 CalcSizeAfterConstraint ( ImGuiWindow * window , ImVec2 new_size )
static ImVec2 CalcWindow SizeAfterConstraint ( ImGuiWindow * window , ImVec2 new_size )
{
ImGuiContext & g = * GImGui ;
if ( g . NextWindowData . Flags & ImGuiNextWindowDataFlags_HasSizeConstraint )
@ -4889,7 +4889,7 @@ static ImVec2 CalcSizeAfterConstraint(ImGuiWindow* window, ImVec2 new_size)
return new_size ;
}
static ImVec2 CalcContentSize ( ImGuiWindow * window )
static ImVec2 CalcWindow ContentSize ( ImGuiWindow * window )
{
if ( window - > Collapsed )
if ( window - > AutoFitFramesX < = 0 & & window - > AutoFitFramesY < = 0 )
@ -4903,7 +4903,7 @@ static ImVec2 CalcContentSize(ImGuiWindow* window)
return sz ;
}
static ImVec2 CalcSizeAutoFit ( ImGuiWindow * window , const ImVec2 & size_contents )
static ImVec2 CalcWindowAutoFitSize ( ImGuiWindow * window , const ImVec2 & size_contents )
{
ImGuiContext & g = * GImGui ;
ImGuiStyle & style = g . Style ;
@ -4927,7 +4927,7 @@ static ImVec2 CalcSizeAutoFit(ImGuiWindow* window, const ImVec2& size_contents)
// When the window cannot fit all contents (either because of constraints, either because screen is too small),
// we are growing the size on the other axis to compensate for expected scrollbar. FIXME: Might turn bigger than ViewportSize-WindowPadding.
ImVec2 size_auto_fit_after_constraint = CalcSizeAfterConstraint ( window , size_auto_fit ) ;
ImVec2 size_auto_fit_after_constraint = CalcWindow SizeAfterConstraint ( window , size_auto_fit ) ;
bool will_have_scrollbar_x = ( size_auto_fit_after_constraint . x - size_pad . x - size_decorations . x < size_contents . x & & ! ( window - > Flags & ImGuiWindowFlags_NoScrollbar ) & & ( window - > Flags & ImGuiWindowFlags_HorizontalScrollbar ) ) | | ( window - > Flags & ImGuiWindowFlags_AlwaysHorizontalScrollbar ) ;
bool will_have_scrollbar_y = ( size_auto_fit_after_constraint . y - size_pad . y - size_decorations . y < size_contents . y & & ! ( window - > Flags & ImGuiWindowFlags_NoScrollbar ) ) | | ( window - > Flags & ImGuiWindowFlags_AlwaysVerticalScrollbar ) ;
if ( will_have_scrollbar_x )
@ -4940,8 +4940,10 @@ static ImVec2 CalcSizeAutoFit(ImGuiWindow* window, const ImVec2& size_contents)
ImVec2 ImGui : : CalcWindowExpectedSize ( ImGuiWindow * window )
{
ImVec2 size_contents = CalcContentSize ( window ) ;
return CalcSizeAfterConstraint ( window , CalcSizeAutoFit ( window , size_contents ) ) ;
ImVec2 size_contents = CalcWindowContentSize ( window ) ;
ImVec2 size_auto_fit = CalcWindowAutoFitSize ( window , size_contents ) ;
ImVec2 size_final = CalcWindowSizeAfterConstraint ( window , size_auto_fit ) ;
return size_final ;
}
static ImGuiCol GetWindowBgColorIdxFromFlags ( ImGuiWindowFlags flags )
@ -4958,7 +4960,7 @@ static void CalcResizePosSizeFromAnyCorner(ImGuiWindow* window, const ImVec2& co
ImVec2 pos_min = ImLerp ( corner_target , window - > Pos , corner_norm ) ; // Expected window upper-left
ImVec2 pos_max = ImLerp ( window - > Pos + window - > Size , corner_target , corner_norm ) ; // Expected window lower-right
ImVec2 size_expected = pos_max - pos_min ;
ImVec2 size_constrained = CalcSizeAfterConstraint ( window , size_expected ) ;
ImVec2 size_constrained = CalcWindow SizeAfterConstraint ( window , size_expected ) ;
* out_pos = pos_min ;
if ( corner_norm . x = = 0.0f )
out_pos - > x - = ( size_constrained . x - size_expected . x ) ;
@ -5039,7 +5041,7 @@ static bool ImGui::UpdateManualResize(ImGuiWindow* window, const ImVec2& size_au
if ( held & & g . IO . MouseDoubleClicked [ 0 ] & & resize_grip_n = = 0 )
{
// Manual auto-fit when double-clicking
size_target = CalcSizeAfterConstraint ( window , size_auto_fit ) ;
size_target = CalcWindow SizeAfterConstraint ( window , size_auto_fit ) ;
ret_auto_fit = true ;
ClearActiveID ( ) ;
}
@ -5094,7 +5096,7 @@ static bool ImGui::UpdateManualResize(ImGuiWindow* window, const ImVec2& size_au
g . NavDisableMouseHover = true ;
resize_grip_col [ 0 ] = GetColorU32 ( ImGuiCol_ResizeGripActive ) ;
// FIXME-NAV: Should store and accumulate into a separate size buffer to handle sizing constraints properly, right now a constraint will make us stuck.
size_target = CalcSizeAfterConstraint ( window , window - > SizeFull + nav_resize_delta ) ;
size_target = CalcWindow SizeAfterConstraint ( window , window - > SizeFull + nav_resize_delta ) ;
}
}
@ -5481,7 +5483,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
// UPDATE CONTENTS SIZE, UPDATE HIDDEN STATUS
// Update contents size from last frame for auto-fitting (or use explicit size)
window - > ContentSize = CalcContentSize ( window ) ;
window - > ContentSize = CalcWindow ContentSize ( window ) ;
if ( window - > HiddenFramesCanSkipItems > 0 )
window - > HiddenFramesCanSkipItems - - ;
if ( window - > HiddenFramesCannotSkipItems > 0 )
@ -5545,7 +5547,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
// SIZE
// Calculate auto-fit size, handle automatic resize
const ImVec2 size_auto_fit = CalcSizeAutoFit ( window , window - > ContentSize ) ;
const ImVec2 size_auto_fit = CalcWindowAutoFitSize ( window , window - > ContentSize ) ;
bool use_current_size_for_scrollbar_x = window_just_created ;
bool use_current_size_for_scrollbar_y = window_just_created ;
if ( ( flags & ImGuiWindowFlags_AlwaysAutoResize ) & & ! window - > Collapsed )
@ -5581,7 +5583,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
}
// Apply minimum/maximum window size constraints and final size
window - > SizeFull = CalcSizeAfterConstraint ( window , window - > SizeFull ) ;
window - > SizeFull = CalcWindow SizeAfterConstraint ( window , window - > SizeFull ) ;
window - > Size = window - > Collapsed & & ! ( flags & ImGuiWindowFlags_ChildWindow ) ? window - > TitleBarRect ( ) . GetSize ( ) : window - > SizeFull ;
// Decoration size