mirror of
https://github.com/ocornut/imgui.git
synced 2024-11-27 16:29:02 +08:00
Nav: Fixed explicit directional input not re-highlighting current nav item if there is a single item in the window and highlight has been previously disabled by the mouse. (#787)
This commit is contained in:
parent
b9ae9bb1e3
commit
cc4b1f9e47
@ -47,6 +47,8 @@ Other Changes:
|
||||
- Nav, Focus: Fixed ImGuiWindowFlags_NoBringToFrontOnFocus windows not being restoring focus
|
||||
properly after the main menu bar or last focused window is deactivated.
|
||||
- Nav: Fixed an assert in certain circumstance (mostly when using popups) when mouse positions stop being valid. (#2168)
|
||||
- Nav: Fixed explicit directional input not re-highlighting current nav item if there is a single item in the window
|
||||
and highlight has been previously disabled by the mouse. (#787)
|
||||
- DragFloat: Fixed a situation where dragging with value rounding enabled or with a power curve
|
||||
erroneously wrapped the value to one of the min/max edge. (#2024, #708, #320, #2075).
|
||||
- DragFloat: Disabled using power curve when one edge is FLT_MAX (broken in 1.61). (#2024)
|
||||
|
17
imgui.cpp
17
imgui.cpp
@ -7242,7 +7242,7 @@ static void ImGui::NavUpdate()
|
||||
g.NavJustMovedToId = 0;
|
||||
|
||||
// Process navigation move request
|
||||
if (g.NavMoveRequest && (g.NavMoveResultLocal.ID != 0 || g.NavMoveResultOther.ID != 0))
|
||||
if (g.NavMoveRequest)
|
||||
NavUpdateMoveResult();
|
||||
|
||||
// When a forwarded move request failed, we restore the highlight that we disabled during the forward frame
|
||||
@ -7457,10 +7457,22 @@ static void ImGui::NavUpdate()
|
||||
#endif
|
||||
}
|
||||
|
||||
// Apply result from previous frame navigation directional move request
|
||||
static void ImGui::NavUpdateMoveResult()
|
||||
{
|
||||
// Select which result to use
|
||||
ImGuiContext& g = *GImGui;
|
||||
if (g.NavMoveResultLocal.ID == 0 && g.NavMoveResultOther.ID == 0)
|
||||
{
|
||||
// In a situation when there is no results but NavId != 0, re-enable the Navigation highlight (because g.NavId is not considered as a possible result)
|
||||
if (g.NavId != 0)
|
||||
{
|
||||
g.NavDisableHighlight = false;
|
||||
g.NavDisableMouseHover = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Select which result to use
|
||||
ImGuiNavMoveResult* result = (g.NavMoveResultLocal.ID != 0) ? &g.NavMoveResultLocal : &g.NavMoveResultOther;
|
||||
|
||||
// PageUp/PageDown behavior first jumps to the bottom/top mostly visible item, _otherwise_ use the result from the previous/next page.
|
||||
@ -7490,7 +7502,6 @@ static void ImGui::NavUpdateMoveResult()
|
||||
NavScrollToBringItemIntoView(result->Window->ParentWindow, ImRect(rect_abs.Min + delta_scroll, rect_abs.Max + delta_scroll));
|
||||
}
|
||||
|
||||
// Apply result from previous frame navigation directional move request
|
||||
ClearActiveID();
|
||||
g.NavWindow = result->Window;
|
||||
SetNavIDWithRectRel(result->ID, g.NavLayer, result->RectRel);
|
||||
|
Loading…
Reference in New Issue
Block a user