@ -924,7 +924,7 @@ static void NavEndFrame();
static bool NavScoreItem ( ImGuiNavItemData * result ) ;
static void NavApplyItemToResult ( ImGuiNavItemData * result ) ;
static void NavProcessItem ( ) ;
static void NavProcessItemForTabbingRequest ( ImGuiWindow * window , ImGui ID id ) ;
static void NavProcessItemForTabbingRequest ( ImGuiID id ) ;
static ImVec2 NavCalcPreferredRefPos ( ) ;
static void NavSaveLastChildNavWindowIntoParent ( ImGuiWindow * nav_window ) ;
static ImGuiWindow * NavRestoreLastChildNavWindow ( ImGuiWindow * window ) ;
@ -9056,7 +9056,7 @@ static void ImGui::NavProcessItem()
if ( is_tabbing )
{
if ( is_tab_stop | | ( g . NavMoveFlags & ImGuiNavMoveFlags_FocusApi ) )
NavProcessItemForTabbingRequest ( window , id ) ;
NavProcessItemForTabbingRequest ( id ) ;
}
else if ( ( g . NavId ! = id | | ( g . NavMoveFlags & ImGuiNavMoveFlags_AllowCurrentNavId ) ) & & ! ( item_flags & ( ImGuiItemFlags_Disabled | ImGuiItemFlags_NoNav ) ) )
{
@ -9094,11 +9094,12 @@ static void ImGui::NavProcessItem()
// - Case 3: tab forward wrap: set result to first eligible item (preemptively), on ref id set counter, on next frame if counter hasn't elapsed store result. // FIXME-TABBING: Could be done as a next-frame forwarded request
// - Case 4: tab backward: store all results, on ref id pick prev, stop storing
// - Case 5: tab backward wrap: store all results, on ref id if no result keep storing until last // FIXME-TABBING: Could be done as next-frame forwarded requested
void ImGui : : NavProcessItemForTabbingRequest ( ImGuiWindow * window , ImGui ID id )
void ImGui : : NavProcessItemForTabbingRequest ( ImGuiID id )
{
ImGuiContext & g = * GImGui ;
ImGuiNavItemData * result = ( window = = g . NavWindow ) ? & g . NavMoveResultLocal : & g . NavMoveResultOther ;
// Always store in NavMoveResultLocal (unlike directional request which uses NavMoveResultOther on sibling/flattened windows)
ImGuiNavItemData * result = & g . NavMoveResultLocal ;
if ( g . NavTabbingDir = = + 1 )
{
// Tab Forward or SetKeyboardFocusHere() with >= 0