@ -926,6 +926,7 @@ static ImVec2 NavCalcPreferredRefPos();
static void NavSaveLastChildNavWindowIntoParent ( ImGuiWindow * nav_window ) ;
static ImGuiWindow * NavRestoreLastChildNavWindow ( ImGuiWindow * window ) ;
static void NavRestoreLayer ( ImGuiNavLayer layer ) ;
static void NavRestoreHighlightAfterMove ( ) ;
static int FindWindowFocusIndex ( ImGuiWindow * window ) ;
// Error Checking and Debug Tools
@ -8811,8 +8812,6 @@ void ImGui::SetNavID(ImGuiID id, ImGuiNavLayer nav_layer, ImGuiID focus_scope_id
g . NavFocusScopeId = focus_scope_id ;
g . NavWindow - > NavLastIds [ nav_layer ] = id ;
g . NavWindow - > NavRectRel [ nav_layer ] = rect_rel ;
//g.NavDisableHighlight = false;
//g.NavDisableMouseHover = g.NavMousePosDirty = true;
}
void ImGui : : SetFocusID ( ImGuiID id , ImGuiWindow * window )
@ -9187,6 +9186,11 @@ void ImGui::NavRestoreLayer(ImGuiNavLayer layer)
g . NavLayer = layer ;
NavInitWindow ( window , true ) ;
}
}
void ImGui : : NavRestoreHighlightAfterMove ( )
{
ImGuiContext & g = * GImGui ;
g . NavDisableHighlight = false ;
g . NavDisableMouseHover = g . NavMousePosDirty = true ;
}
@ -9486,10 +9490,7 @@ void ImGui::NavInitRequestApplyResult()
SetNavID ( g . NavInitResultId , g . NavLayer , 0 , g . NavInitResultRectRel ) ;
g . NavIdIsAlive = true ; // Mark as alive from previous frame as we got a result
if ( g . NavInitRequestFromMove )
{
g . NavDisableHighlight = false ;
g . NavDisableMouseHover = g . NavMousePosDirty = true ;
}
NavRestoreHighlightAfterMove ( ) ;
}
void ImGui : : NavUpdateCreateMoveRequest ( )
@ -9604,10 +9605,7 @@ void ImGui::NavMoveRequestApplyResult()
if ( g . NavMoveFlags & ImGuiNavMoveFlags_Tabbing )
g . NavMoveFlags | = ImGuiNavMoveFlags_DontSetNavHighlight ;
if ( g . NavId ! = 0 & & ( g . NavMoveFlags & ImGuiNavMoveFlags_DontSetNavHighlight ) = = 0 )
{
g . NavDisableHighlight = false ;
g . NavDisableMouseHover = true ;
}
NavRestoreHighlightAfterMove ( ) ;
return ;
}
@ -9669,10 +9667,7 @@ void ImGui::NavMoveRequestApplyResult()
// Enable nav highlight
if ( ( g . NavMoveFlags & ImGuiNavMoveFlags_DontSetNavHighlight ) = = 0 )
{
g . NavDisableHighlight = false ;
g . NavDisableMouseHover = g . NavMousePosDirty = true ;
}
NavRestoreHighlightAfterMove ( ) ;
}
// Process NavCancel input (to close a popup, get back to parent, clear focus)
@ -9695,6 +9690,7 @@ static void ImGui::NavUpdateCancelRequest()
{
// Leave the "menu" layer
NavRestoreLayer ( ImGuiNavLayer_Main ) ;
NavRestoreHighlightAfterMove ( ) ;
}
else if ( g . NavWindow & & g . NavWindow ! = g . NavWindow - > RootWindow & & ! ( g . NavWindow - > Flags & ImGuiWindowFlags_Popup ) & & g . NavWindow - > ParentWindow )
{
@ -9705,6 +9701,7 @@ static void ImGui::NavUpdateCancelRequest()
ImRect child_rect = child_window - > Rect ( ) ;
FocusWindow ( parent_window ) ;
SetNavID ( child_window - > ChildId , ImGuiNavLayer_Main , 0 , WindowRectAbsToRel ( parent_window , child_rect ) ) ;
NavRestoreHighlightAfterMove ( ) ;
}
else if ( g . OpenPopupStack . Size > 0 )
{
@ -10031,8 +10028,7 @@ static void ImGui::NavUpdateWindowing()
if ( apply_focus_window & & ( g . NavWindow = = NULL | | apply_focus_window ! = g . NavWindow - > RootWindow ) )
{
ClearActiveID ( ) ;
g . NavDisableHighlight = false ;
g . NavDisableMouseHover = true ;
NavRestoreHighlightAfterMove ( ) ;
apply_focus_window = NavRestoreLastChildNavWindow ( apply_focus_window ) ;
ClosePopupsOverWindow ( apply_focus_window , false ) ;
FocusWindow ( apply_focus_window ) ;
@ -10079,6 +10075,7 @@ static void ImGui::NavUpdateWindowing()
if ( new_nav_layer = = ImGuiNavLayer_Menu )
g . NavWindow - > NavLastIds [ new_nav_layer ] = 0 ;
NavRestoreLayer ( new_nav_layer ) ;
NavRestoreHighlightAfterMove ( ) ;
}
}
}