@ -430,6 +430,9 @@ CODE
When you are not sure about an old symbol or function name , try using the Search / Find function of your IDE to look for comments or references in all imgui files .
You can read releases logs https : //github.com/ocornut/imgui/releases for more details.
- 2024 / 06 / 21 ( 1.90 .9 ) - BeginChild : added ImGuiChildFlags_NavFlattened as a replacement for the window flag ImGuiWindowFlags_NavFlattened : the feature only ever made sense for BeginChild ( ) anyhow .
- old : BeginChild ( " Name " , size , 0 , ImGuiWindowFlags_NavFlattened ) ;
- new : BeginChild ( " Name " , size , ImGuiChildFlags_NavFlattened , 0 ) ;
- 2024 / 06 / 21 ( 1.90 .9 ) - io : ClearInputKeys ( ) ( first exposed in 1.89 .8 ) doesn ' t clear mouse data , newly added ClearInputMouse ( ) does .
- 2024 / 06 / 20 ( 1.90 .9 ) - renamed ImGuiDragDropFlags_SourceAutoExpirePayload to ImGuiDragDropFlags_PayloadAutoExpire .
- 2024 / 06 / 18 ( 1.90 .9 ) - style : renamed ImGuiCol_TabActive - > ImGuiCol_TabSelected , ImGuiCol_TabUnfocused - > ImGuiCol_TabDimmed , ImGuiCol_TabUnfocusedActive - > ImGuiCol_TabDimmedSelected .
@ -5533,7 +5536,7 @@ bool ImGui::BeginChildEx(const char* name, ImGuiID id, const ImVec2& size_arg, I
IM_ASSERT ( id ! = 0 ) ;
// Sanity check as it is likely that some user will accidentally pass ImGuiWindowFlags into the ImGuiChildFlags argument.
const ImGuiChildFlags ImGuiChildFlags_SupportedMask_ = ImGuiChildFlags_Border | ImGuiChildFlags_AlwaysUseWindowPadding | ImGuiChildFlags_ResizeX | ImGuiChildFlags_ResizeY | ImGuiChildFlags_AutoResizeX | ImGuiChildFlags_AutoResizeY | ImGuiChildFlags_AlwaysAutoResize | ImGuiChildFlags_FrameStyle ;
const ImGuiChildFlags ImGuiChildFlags_SupportedMask_ = ImGuiChildFlags_Border | ImGuiChildFlags_AlwaysUseWindowPadding | ImGuiChildFlags_ResizeX | ImGuiChildFlags_ResizeY | ImGuiChildFlags_AutoResizeX | ImGuiChildFlags_AutoResizeY | ImGuiChildFlags_AlwaysAutoResize | ImGuiChildFlags_FrameStyle | ImGuiChildFlags_NavFlattened ;
IM_UNUSED ( ImGuiChildFlags_SupportedMask_ ) ;
IM_ASSERT ( ( child_flags & ~ ImGuiChildFlags_SupportedMask_ ) = = 0 & & " Illegal ImGuiChildFlags value. Did you pass ImGuiWindowFlags values instead of ImGuiChildFlags? " ) ;
IM_ASSERT ( ( window_flags & ImGuiWindowFlags_AlwaysAutoResize ) = = 0 & & " Cannot specify ImGuiWindowFlags_AlwaysAutoResize for BeginChild(). Use ImGuiChildFlags_AlwaysAutoResize! " ) ;
@ -5545,6 +5548,8 @@ bool ImGui::BeginChildEx(const char* name, ImGuiID id, const ImVec2& size_arg, I
# ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
if ( window_flags & ImGuiWindowFlags_AlwaysUseWindowPadding )
child_flags | = ImGuiChildFlags_AlwaysUseWindowPadding ;
if ( window_flags & ImGuiWindowFlags_NavFlattened )
child_flags | = ImGuiChildFlags_NavFlattened ;
# endif
if ( child_flags & ImGuiChildFlags_AutoResizeX )
child_flags & = ~ ImGuiChildFlags_ResizeX ;
@ -5623,7 +5628,7 @@ bool ImGui::BeginChildEx(const char* name, ImGuiID id, const ImVec2& size_arg, I
const ImGuiID temp_id_for_activation = ImHashStr ( " ##Child " , 0 , id ) ;
if ( g . ActiveId = = temp_id_for_activation )
ClearActiveID ( ) ;
if ( g . NavActivateId = = id & & ! ( window_flags & ImGuiWindow Flags_NavFlattened) & & ( child_window - > DC . NavLayersActiveMask ! = 0 | | child_window - > DC . NavWindowHasScrollY ) )
if ( g . NavActivateId = = id & & ! ( child_flags & ImGuiChild Flags_NavFlattened) & & ( child_window - > DC . NavLayersActiveMask ! = 0 | | child_window - > DC . NavWindowHasScrollY ) )
{
FocusWindow ( child_window ) ;
NavInitWindow ( child_window , false ) ;
@ -5649,7 +5654,8 @@ void ImGui::EndChild()
ImGuiWindow * parent_window = g . CurrentWindow ;
ImRect bb ( parent_window - > DC . CursorPos , parent_window - > DC . CursorPos + child_size ) ;
ItemSize ( child_size ) ;
if ( ( child_window - > DC . NavLayersActiveMask ! = 0 | | child_window - > DC . NavWindowHasScrollY ) & & ! ( child_window - > Flags & ImGuiWindowFlags_NavFlattened ) )
const bool nav_flattened = ( child_window - > ChildFlags & ImGuiChildFlags_NavFlattened ) ! = 0 ;
if ( ( child_window - > DC . NavLayersActiveMask ! = 0 | | child_window - > DC . NavWindowHasScrollY ) & & ! nav_flattened )
{
ItemAdd ( bb , child_window - > ChildId ) ;
RenderNavHighlight ( bb , child_window - > ChildId ) ;
@ -5666,7 +5672,7 @@ void ImGui::EndChild()
ItemAdd ( bb , child_window - > ChildId , NULL , ImGuiItemFlags_NoNav ) ;
// But when flattened we directly reach items, adjust active layer mask accordingly
if ( child_window - > Flags & ImGuiWindowFlags_NavF lattened)
if ( nav_f lattened)
parent_window - > DC . NavLayersActiveMaskNext | = child_window - > DC . NavLayersActiveMaskNext ;
}
if ( g . HoveredWindow = = child_window )
@ -6440,7 +6446,7 @@ void ImGui::UpdateWindowParentAndRootLinks(ImGuiWindow* window, ImGuiWindowFlags
window - > RootWindowPopupTree = parent_window - > RootWindowPopupTree ;
if ( parent_window & & ! ( flags & ImGuiWindowFlags_Modal ) & & ( flags & ( ImGuiWindowFlags_ChildWindow | ImGuiWindowFlags_Popup ) ) )
window - > RootWindowForTitleBarHighlight = parent_window - > RootWindowForTitleBarHighlight ;
while ( window - > RootWindowForNav - > Flags & ImGuiWindow Flags_NavFlattened )
while ( window - > RootWindowForNav - > Child Flags & ImGuiChild Flags_NavFlattened )
{
IM_ASSERT ( window - > RootWindowForNav - > ParentWindow ! = NULL ) ;
window - > RootWindowForNav = window - > RootWindowForNav - > ParentWindow ;
@ -6536,9 +6542,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
if ( ( flags & ImGuiWindowFlags_NoInputs ) = = ImGuiWindowFlags_NoInputs )
flags | = ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize ;
if ( flags & ImGuiWindowFlags_NavFlattened )
IM_ASSERT ( flags & ImGuiWindowFlags_ChildWindow ) ;
const int current_frame = g . FrameCount ;
const bool first_begin_of_the_frame = ( window - > LastFrameActive ! = current_frame ) ;
window - > IsFallbackWindow = ( g . CurrentWindowStack . Size = = 0 & & g . WithinFrameScopeWithImplicitWindow ) ;
@ -6603,7 +6606,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
}
// Add to focus scope stack
PushFocusScope ( ( flags & ImGuiWindow Flags_NavFlattened) ? g . CurrentFocusScopeId : window - > ID ) ;
PushFocusScope ( ( window - > ChildFlags & ImGuiChild Flags_NavFlattened) ? g . CurrentFocusScopeId : window - > ID ) ;
window - > NavRootFocusScopeId = g . CurrentFocusScopeId ;
// Add to popup stacks: update OpenPopupStack[] data, push to BeginPopupStack[]
@ -7199,7 +7202,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
// Child window can be out of sight and have "negative" clip windows.
// Mark them as collapsed so commands are skipped earlier (we can't manually collapse them because they have no title bar).
IM_ASSERT ( ( flags & ImGuiWindowFlags_NoTitleBar ) ! = 0 ) ;
const bool nav_request = ( flags & ImGuiWindow Flags_NavFlattened) & & ( g . NavAnyRequest & & g . NavWindow & & g . NavWindow - > RootWindowForNav = = window - > RootWindowForNav ) ;
const bool nav_request = ( window - > ChildFlags & ImGuiChild Flags_NavFlattened) & & ( g . NavAnyRequest & & g . NavWindow & & g . NavWindow - > RootWindowForNav = = window - > RootWindowForNav ) ;
if ( ! g . LogEnabled & & ! nav_request )
if ( window - > OuterRectClipped . Min . x > = window - > OuterRectClipped . Max . x | | window - > OuterRectClipped . Min . y > = window - > OuterRectClipped . Max . y )
{
@ -10189,7 +10192,7 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg, ImGu
window - > DC . NavLayersActiveMaskNext | = ( 1 < < window - > DC . NavLayerCurrent ) ;
if ( g . NavId = = id | | g . NavAnyRequest )
if ( g . NavWindow - > RootWindowForNav = = window - > RootWindowForNav )
if ( window = = g . NavWindow | | ( ( window - > Flags | g . NavWindow - > Flags ) & ImGuiWindow Flags_NavFlattened ) )
if ( window = = g . NavWindow | | ( ( window - > Child Flags | g . NavWindow - > Child Flags) & ImGuiChild Flags_NavFlattened ) )
NavProcessItem ( ) ;
}
@ -11678,7 +11681,7 @@ static bool ImGui::NavScoreItem(ImGuiNavItemData* result)
// When entering through a NavFlattened border, we consider child window items as fully clipped for scoring
if ( window - > ParentWindow = = g . NavWindow )
{
IM_ASSERT ( ( window - > Flags | g . NavWindow - > Flags ) & ImGuiWindow Flags_NavFlattened ) ;
IM_ASSERT ( ( window - > Child Flags | g . NavWindow - > Child Flags) & ImGuiChild Flags_NavFlattened ) ;
if ( ! window - > ClipRect . Overlaps ( cand ) )
return false ;
cand . ClipWithFull ( window - > ClipRect ) ; // This allows the scored item to not overlap other candidates in the parent window