@ -1962,15 +1962,15 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window)
SetActiveIDNoNav ( id , window ) ;
if ( id )
{
if ( g . ActiveIdSource = = ImGuiInputSource_Nav )
g . NavDisableMouseHover = true ;
else
g . NavDisableHighlight = true ;
g . NavId = id ;
if ( window )
g . NavLayer = window - > DC . NavLayerCurrent ;
if ( window ) // NB: We current assume that SetActiveId() is called in the context where its NavLayer is the current one, which should be the case.
window - > NavLastIds [ window - > DC . NavLayerCurrent ] = id ;
if ( g . ActiveIdSource = = ImGuiInputSource_Nav )
g . NavDisableMouseHover = true ;
else
g . NavDisableHighlight = true ;
}
}
@ -2184,6 +2184,7 @@ static void NavProcessItem(ImGuiWindow* window, const ImRect& nav_bb, const ImGu
ImGuiContext & g = * GImGui ;
//if (!g.IO.NavUsable) // [2017/10/06] Removed this possibly redundant test but I am not sure of all the side-effects yet. Some of the feature here will need to work regardless of using a _NoNavInputs flag.
// return;
const ImGuiItemFlags item_flags = window - > DC . ItemFlags ;
const ImRect nav_bb_rel ( nav_bb . Min - g . NavWindow - > Pos , nav_bb . Max - g . NavWindow - > Pos ) ;
if ( g . NavInitRequest & & g . NavLayer = = window - > DC . NavLayerCurrent )
@ -2223,10 +2224,10 @@ static void NavProcessItem(ImGuiWindow* window, const ImRect& nav_bb, const ImGu
// Update window-relative bounding box of navigated item
if ( g . NavId = = id )
{
window - > NavRectRel [ window - > DC . NavLayerCurrent ] = nav_bb_rel ;
g . NavWindow = window ; // Always refresh g.NavWindow, because some operations such as FocusItem() don't have a window.
g . NavWindow = window ; // Always refresh g.NavWindow, because some operations such as FocusItem() don't have a window.
g . NavIdIsAlive = true ;
g . NavIdTabCounter = window - > FocusIdxTabCounter ;
window - > NavRectRel [ window - > DC . NavLayerCurrent ] = nav_bb_rel ; // Store item bounding box (relative to window position)
}
}
@ -2921,7 +2922,7 @@ static void NavUpdate()
g . NavMoveResultParentId = 0 ;
g . NavMoveResultDistAxial = g . NavMoveResultDistBox = g . NavMoveResultDistCenter = FLT_MAX ;
// When we have manually scrolled (without using navigation) and NavId becomes out of bounds, we clam p its bounding box (used for search) to the visible area to restart navigation within visible items
// When we have manually scrolled (without using navigation) and NavId becomes out of bounds, we project its bounding box to the visible area to restart navigation within visible items
if ( g . NavMoveRequest & & g . NavMoveFromClampedRefRect & & g . NavLayer = = 0 )
{
ImGuiWindow * window = g . NavWindow ;
@ -9031,9 +9032,9 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
select_all = true ;
}
SetActiveID ( id , window ) ;
FocusWindow ( window ) ;
if ( ! is_multiline )
g . ActiveIdAllowNavDirFlags = ( ( 1 < < ImGuiDir_Up ) | ( 1 < < ImGuiDir_Down ) ) ;
FocusWindow ( window ) ;
}
else if ( io . MouseClicked [ 0 ] )
{