Nav: Fixed SetKeyboardFocusHere() or programmatic tabbing API from not working on windows with the ImGuiWindowFlags_NoNavInputs flag.
Amend/fix 3a078466a
This commit is contained in:
parent
34965cf23a
commit
13d91ff918
@ -43,6 +43,9 @@ Breaking changes:
|
|||||||
|
|
||||||
Other changes:
|
Other changes:
|
||||||
|
|
||||||
|
- Nav: Fixed SetKeyboardFocusHere() or programmatic tabbing API from not working on
|
||||||
|
windows with the ImGuiWindowFlags_NoNavInputs flag (regression in 1.90.2, which
|
||||||
|
among other things broke imgui_memory_editor).
|
||||||
- Menus, Popups: Fixed an issue where hovering a parent-menu upward would
|
- Menus, Popups: Fixed an issue where hovering a parent-menu upward would
|
||||||
erroneously close the window. (#7325, #7287, #7063)
|
erroneously close the window. (#7325, #7287, #7063)
|
||||||
- Popups: Fixed resizable popup minimum size being too small. Standardized minimum
|
- Popups: Fixed resizable popup minimum size being too small. Standardized minimum
|
||||||
|
35
imgui.cpp
35
imgui.cpp
@ -11524,25 +11524,28 @@ static void ImGui::NavProcessItem()
|
|||||||
|
|
||||||
// Process Move Request (scoring for navigation)
|
// Process Move Request (scoring for navigation)
|
||||||
// FIXME-NAV: Consider policy for double scoring (scoring from NavScoringRect + scoring from a rect wrapped according to current wrapping policy)
|
// FIXME-NAV: Consider policy for double scoring (scoring from NavScoringRect + scoring from a rect wrapped according to current wrapping policy)
|
||||||
if (g.NavMoveScoringItems && (item_flags & ImGuiItemFlags_Disabled) == 0 && (window->Flags & ImGuiWindowFlags_NoNavInputs) == 0)
|
if (g.NavMoveScoringItems && (item_flags & ImGuiItemFlags_Disabled) == 0)
|
||||||
{
|
{
|
||||||
const bool is_tabbing = (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) != 0;
|
if ((g.NavMoveFlags & ImGuiNavMoveFlags_FocusApi) || (window->Flags & ImGuiWindowFlags_NoNavInputs) != 0)
|
||||||
if (is_tabbing)
|
|
||||||
{
|
{
|
||||||
NavProcessItemForTabbingRequest(id, item_flags, g.NavMoveFlags);
|
const bool is_tabbing = (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) != 0;
|
||||||
}
|
if (is_tabbing)
|
||||||
else if (g.NavId != id || (g.NavMoveFlags & ImGuiNavMoveFlags_AllowCurrentNavId))
|
{
|
||||||
{
|
NavProcessItemForTabbingRequest(id, item_flags, g.NavMoveFlags);
|
||||||
ImGuiNavItemData* result = (window == g.NavWindow) ? &g.NavMoveResultLocal : &g.NavMoveResultOther;
|
}
|
||||||
if (NavScoreItem(result))
|
else if (g.NavId != id || (g.NavMoveFlags & ImGuiNavMoveFlags_AllowCurrentNavId))
|
||||||
NavApplyItemToResult(result);
|
{
|
||||||
|
ImGuiNavItemData* result = (window == g.NavWindow) ? &g.NavMoveResultLocal : &g.NavMoveResultOther;
|
||||||
|
if (NavScoreItem(result))
|
||||||
|
NavApplyItemToResult(result);
|
||||||
|
|
||||||
// Features like PageUp/PageDown need to maintain a separate score for the visible set of items.
|
// Features like PageUp/PageDown need to maintain a separate score for the visible set of items.
|
||||||
const float VISIBLE_RATIO = 0.70f;
|
const float VISIBLE_RATIO = 0.70f;
|
||||||
if ((g.NavMoveFlags & ImGuiNavMoveFlags_AlsoScoreVisibleSet) && window->ClipRect.Overlaps(nav_bb))
|
if ((g.NavMoveFlags & ImGuiNavMoveFlags_AlsoScoreVisibleSet) && window->ClipRect.Overlaps(nav_bb))
|
||||||
if (ImClamp(nav_bb.Max.y, window->ClipRect.Min.y, window->ClipRect.Max.y) - ImClamp(nav_bb.Min.y, window->ClipRect.Min.y, window->ClipRect.Max.y) >= (nav_bb.Max.y - nav_bb.Min.y) * VISIBLE_RATIO)
|
if (ImClamp(nav_bb.Max.y, window->ClipRect.Min.y, window->ClipRect.Max.y) - ImClamp(nav_bb.Min.y, window->ClipRect.Min.y, window->ClipRect.Max.y) >= (nav_bb.Max.y - nav_bb.Min.y) * VISIBLE_RATIO)
|
||||||
if (NavScoreItem(&g.NavMoveResultLocalVisible))
|
if (NavScoreItem(&g.NavMoveResultLocalVisible))
|
||||||
NavApplyItemToResult(&g.NavMoveResultLocalVisible);
|
NavApplyItemToResult(&g.NavMoveResultLocalVisible);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
imgui.h
2
imgui.h
@ -24,7 +24,7 @@
|
|||||||
// Library Version
|
// Library Version
|
||||||
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345')
|
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345')
|
||||||
#define IMGUI_VERSION "1.90.4 WIP"
|
#define IMGUI_VERSION "1.90.4 WIP"
|
||||||
#define IMGUI_VERSION_NUM 19032
|
#define IMGUI_VERSION_NUM 19033
|
||||||
#define IMGUI_HAS_TABLE
|
#define IMGUI_HAS_TABLE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user