mirror of
https://github.com/ocornut/imgui.git
synced 2024-11-12 02:00:58 +01: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
|
- Nav, Focus: Fixed ImGuiWindowFlags_NoBringToFrontOnFocus windows not being restoring focus
|
||||||
properly after the main menu bar or last focused window is deactivated.
|
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 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
|
- 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).
|
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)
|
- 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;
|
g.NavJustMovedToId = 0;
|
||||||
|
|
||||||
// Process navigation move request
|
// Process navigation move request
|
||||||
if (g.NavMoveRequest && (g.NavMoveResultLocal.ID != 0 || g.NavMoveResultOther.ID != 0))
|
if (g.NavMoveRequest)
|
||||||
NavUpdateMoveResult();
|
NavUpdateMoveResult();
|
||||||
|
|
||||||
// When a forwarded move request failed, we restore the highlight that we disabled during the forward frame
|
// 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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Apply result from previous frame navigation directional move request
|
||||||
static void ImGui::NavUpdateMoveResult()
|
static void ImGui::NavUpdateMoveResult()
|
||||||
{
|
{
|
||||||
// Select which result to use
|
|
||||||
ImGuiContext& g = *GImGui;
|
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;
|
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.
|
// 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));
|
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();
|
ClearActiveID();
|
||||||
g.NavWindow = result->Window;
|
g.NavWindow = result->Window;
|
||||||
SetNavIDWithRectRel(result->ID, g.NavLayer, result->RectRel);
|
SetNavIDWithRectRel(result->ID, g.NavLayer, result->RectRel);
|
||||||
|
Loading…
Reference in New Issue
Block a user