|
|
|
@ -2248,6 +2248,16 @@ static bool NavScoreItem(ImGuiNavMoveResult* result, ImRect cand) |
|
|
|
|
return new_best; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void NavRestoreLayer(int layer) |
|
|
|
|
{ |
|
|
|
|
ImGuiContext& g = *GImGui; |
|
|
|
|
g.NavLayer = layer; |
|
|
|
|
if (layer == 0 && g.NavWindow->NavLastIds[0] != 0) |
|
|
|
|
SetNavIDAndMoveMouse(g.NavWindow->NavLastIds[0], layer, g.NavWindow->NavRectRel[0]); |
|
|
|
|
else |
|
|
|
|
ImGui::NavInitWindow(g.NavWindow, true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline void NavUpdateAnyRequestFlag() |
|
|
|
|
{ |
|
|
|
|
ImGuiContext& g = *GImGui; |
|
|
|
@ -2825,13 +2835,9 @@ static void ImGui::NavUpdateWindowing() |
|
|
|
|
{ |
|
|
|
|
if ((g.NavWindow->DC.NavLayerActiveMask & (1 << 1)) == 0 && (g.NavWindow->RootWindow->DC.NavLayerActiveMask & (1 << 1)) != 0) |
|
|
|
|
FocusWindow(g.NavWindow->RootWindow); |
|
|
|
|
g.NavLayer = (g.NavWindow->DC.NavLayerActiveMask & (1 << 1)) ? (g.NavLayer ^ 1) : 0; |
|
|
|
|
g.NavDisableHighlight = false; |
|
|
|
|
g.NavDisableMouseHover = true; |
|
|
|
|
if (g.NavLayer == 0 && g.NavWindow->NavLastIds[0] != 0) |
|
|
|
|
SetNavIDAndMoveMouse(g.NavWindow->NavLastIds[0], g.NavLayer, ImRect()); |
|
|
|
|
else |
|
|
|
|
NavInitWindow(g.NavWindow, true); |
|
|
|
|
NavRestoreLayer((g.NavWindow->DC.NavLayerActiveMask & (1 << 1)) ? (g.NavLayer ^ 1) : 0); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2971,11 +2977,7 @@ static void ImGui::NavUpdate() |
|
|
|
|
else if (g.NavLayer != 0) |
|
|
|
|
{ |
|
|
|
|
// Leave the "menu" layer
|
|
|
|
|
g.NavLayer = 0; |
|
|
|
|
if (g.NavWindow->NavLastIds[0]) |
|
|
|
|
SetNavIDAndMoveMouse(g.NavWindow->NavLastIds[0], g.NavLayer, ImRect()); |
|
|
|
|
else |
|
|
|
|
NavInitWindow(g.NavWindow, true); |
|
|
|
|
NavRestoreLayer(0); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|