@ -1683,11 +1683,13 @@ bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboF
const ImGuiStyle & style = g . Style ;
const ImGuiID id = window - > GetID ( label ) ;
IM_ASSERT ( ( flags & ( ImGuiComboFlags_NoArrowButton | ImGuiComboFlags_NoPreview ) ) ! = ( ImGuiComboFlags_NoArrowButton | ImGuiComboFlags_NoPreview ) ) ; // Can't use both flags together
if ( flags & ImGuiComboFlags_WidthFitPreview )
IM_ASSERT ( ( flags & ( ImGuiComboFlags_NoPreview | ImGuiComboFlags_CustomPreview ) ) = = 0 ) ;
const float arrow_size = ( flags & ImGuiComboFlags_NoArrowButton ) ? 0.0f : GetFrameHeight ( ) ;
const ImVec2 label_size = CalcTextSize ( label , NULL , true ) ;
const float preview_width = ( preview_value ! = nullptr ) ? CalcTextSize ( preview_value , NULL , true ) . x : 0.0f ;
const float w = ( flags & ImGuiComboFlags_NoPreview ) ? arrow_size : ( ( flags & ImGuiComboFlags_WidthFitPreview ) ? arrow_size + preview_width + style . ItemInnerSpac ing. x * 2.0f : CalcItemWidth ( ) ) ;
const float preview_width = ( ( flags & ImGuiComboFlags_WidthFitPreview ) & & ( preview_value ! = NULL ) ) ? CalcTextSize ( preview_value , NULL , true ) . x : 0.0f ;
const float w = ( flags & ImGuiComboFlags_NoPreview ) ? arrow_size : ( ( flags & ImGuiComboFlags_WidthFitPreview ) ? ( arrow_size + preview_width + style . FramePadd ing. x * 2.0f ) : CalcItemWidth ( ) ) ;
const ImRect bb ( window - > DC . CursorPos , window - > DC . CursorPos + ImVec2 ( w , label_size . y + style . FramePadding . y * 2.0f ) ) ;
const ImRect total_bb ( bb . Min , bb . Max + ImVec2 ( label_size . x > 0.0f ? style . ItemInnerSpacing . x + label_size . x : 0.0f , 0.0f ) ) ;
ItemSize ( total_bb , style . FramePadding . y ) ;