@ -5402,14 +5402,15 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
// Title bar
if ( ! ( flags & ImGuiWindowFlags_NoTitleBar ) )
window - > DrawList - > AddRectFilled ( title_bar_rect . GetTL( ) , title_bar_rect . GetBR ( ) , GetColorU32 ( window_is_focused ? ImGuiCol_TitleBgActive : ImGuiCol_TitleBg ) , window_rounding , ImDrawCornerFlags_Top ) ;
window - > DrawList - > AddRectFilled ( title_bar_rect . Min, title_bar_rect . Max , GetColorU32 ( window_is_focused ? ImGuiCol_TitleBgActive : ImGuiCol_TitleBg ) , window_rounding , ImDrawCornerFlags_Top ) ;
// Menu bar
if ( flags & ImGuiWindowFlags_MenuBar )
{
ImRect menu_bar_rect = window - > MenuBarRect ( ) ;
window - > DrawList - > AddRectFilled ( menu_bar_rect . GetTL ( ) , menu_bar_rect . GetBR ( ) , GetColorU32 ( ImGuiCol_MenuBarBg ) , ( flags & ImGuiWindowFlags_NoTitleBar ) ? window_rounding : 0.0f , ImDrawCornerFlags_Top ) ;
if ( style . FrameBorderSize > 0.0f )
menu_bar_rect . ClipWith ( window - > Rect ( ) ) ; // Soft clipping, in particular child window don't have minimum size covering the menu bar so this is useful for them.
window - > DrawList - > AddRectFilled ( menu_bar_rect . Min , menu_bar_rect . Max , GetColorU32 ( ImGuiCol_MenuBarBg ) , ( flags & ImGuiWindowFlags_NoTitleBar ) ? window_rounding : 0.0f , ImDrawCornerFlags_Top ) ;
if ( style . FrameBorderSize > 0.0f & & menu_bar_rect . Max . y < window - > Pos . y + window - > Size . y )
window - > DrawList - > AddLine ( menu_bar_rect . GetBL ( ) , menu_bar_rect . GetBR ( ) , GetColorU32 ( ImGuiCol_Border ) , style . FrameBorderSize ) ;
}
@ -10366,14 +10367,18 @@ bool ImGui::BeginMenuBar()
if ( ! ( window - > Flags & ImGuiWindowFlags_MenuBar ) )
return false ;
ImGuiContext & g = * GImGui ;
IM_ASSERT ( ! window - > DC . MenuBarAppending ) ;
BeginGroup ( ) ; // Save position
PushID ( " ##menubar " ) ;
ImRect rect = window - > MenuBarRect ( ) ;
rect . Max . x = ImMax ( rect . Min . x , rect . Max . x - g . Style . WindowRounding ) ;
PushClipRect ( ImVec2 ( ImFloor ( rect . Min . x + 0.5f ) , ImFloor ( rect . Min . y + window - > WindowBorderSize + 0.5f ) ) , ImVec2 ( ImFloor ( rect . Max . x + 0.5f ) , ImFloor ( rect . Max . y + 0.5f ) ) , false ) ;
window - > DC . CursorPos = ImVec2 ( rect . Min . x + window - > DC . MenuBarOffsetX , rect . Min . y ) ; // + g.Style.FramePadding.y);
// We don't clip with regular window clipping rectangle as it is already set to the area below. However we clip with window full rect.
// We remove 1 worth of rounding to Max.x to that text in long menus don't tend to display over the lower-right rounded area, which looks particularly glitchy.
ImRect bar_rect = window - > MenuBarRect ( ) ;
ImRect clip_rect ( ImFloor ( bar_rect . Min . x + 0.5f ) , ImFloor ( bar_rect . Min . y + window - > WindowBorderSize + 0.5f ) , ImFloor ( ImMax ( bar_rect . Min . x , bar_rect . Max . x - window - > WindowRounding ) + 0.5f ) , ImFloor ( bar_rect . Max . y + 0.5f ) ) ;
clip_rect . ClipWith ( window - > Rect ( ) ) ;
PushClipRect ( clip_rect . Min , clip_rect . Max , false ) ;
window - > DC . CursorPos = ImVec2 ( bar_rect . Min . x + window - > DC . MenuBarOffsetX , bar_rect . Min . y ) ; // + g.Style.FramePadding.y);
window - > DC . LayoutType = ImGuiLayoutType_Horizontal ;
window - > DC . NavLayerCurrent + + ;
window - > DC . NavLayerCurrentMask < < = 1 ;
@ -10879,7 +10884,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
if ( n + 1 = = components )
PushItemWidth ( w_item_last ) ;
if ( flags & ImGuiColorEditFlags_Float )
value_changed |= value_changed_as_float | = DragFloat ( ids [ n ] , & f [ n ] , 1.0f / 255.0f , 0.0f , hdr ? 0.0f : 1.0f , fmt_table_float [ fmt_idx ] [ n ] ) ;
value_changed = value_changed_as_float = value_changed | DragFloat ( ids [ n ] , & f [ n ] , 1.0f / 255.0f , 0.0f , hdr ? 0.0f : 1.0f , fmt_table_float [ fmt_idx ] [ n ] ) ;
else
value_changed | = DragInt ( ids [ n ] , & i [ n ] , 1.0f , 0 , hdr ? 0 : 255 , fmt_table_int [ fmt_idx ] [ n ] ) ;
if ( ! ( flags & ImGuiColorEditFlags_NoOptions ) )
@ -10899,7 +10904,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
PushItemWidth ( w_items_all ) ;
if ( InputText ( " ##Text " , buf , IM_ARRAYSIZE ( buf ) , ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase ) )
{
value_changed | = true ;
value_changed = true ;
char * p = buf ;
while ( * p = = ' # ' | | ImCharIsSpace ( * p ) )
p + + ;