mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Menus, Nav: Fixed using left/right navigation when appending to an existing menu (multiple BeginMenu() call with same names). (#1207)
This commit is contained in:
parent
3532ed1621
commit
bd2355a047
@ -137,6 +137,8 @@ Other Changes:
|
|||||||
the gap between a menu item inside a window and a child-menu in a secondary viewport. (#5614)
|
the gap between a menu item inside a window and a child-menu in a secondary viewport. (#5614)
|
||||||
- Menus, Nav: Fixed keyboard/gamepad navigation occasionally erroneously landing on menu-item in
|
- Menus, Nav: Fixed keyboard/gamepad navigation occasionally erroneously landing on menu-item in
|
||||||
parent when the parent is not a popup. (#5730)
|
parent when the parent is not a popup. (#5730)
|
||||||
|
- Menus, Nav: Fixed using left/right navigation when appending to an existing menu (multiple
|
||||||
|
BeginMenu() call with same names). (#1207)
|
||||||
- Nav: Fixed moving/resizing window with gamepad or keyboard when running at very high framerate.
|
- Nav: Fixed moving/resizing window with gamepad or keyboard when running at very high framerate.
|
||||||
- Nav: Pressing Space/GamepadFaceDown on a repeating button uses the same repeating rate as a mouse hold.
|
- Nav: Pressing Space/GamepadFaceDown on a repeating button uses the same repeating rate as a mouse hold.
|
||||||
- Nav: Fixed an issue opening a menu with Right key from a non-menu window.
|
- Nav: Fixed an issue opening a menu with Right key from a non-menu window.
|
||||||
|
@ -4608,9 +4608,10 @@ void ImGui::NewFrame()
|
|||||||
{
|
{
|
||||||
ImGuiWindow* window = g.Windows[i];
|
ImGuiWindow* window = g.Windows[i];
|
||||||
window->WasActive = window->Active;
|
window->WasActive = window->Active;
|
||||||
window->BeginCount = 0;
|
|
||||||
window->Active = false;
|
window->Active = false;
|
||||||
window->WriteAccessed = false;
|
window->WriteAccessed = false;
|
||||||
|
window->BeginCountPreviousFrame = window->BeginCount;
|
||||||
|
window->BeginCount = 0;
|
||||||
|
|
||||||
// Garbage collect transient buffers of recently unused windows
|
// Garbage collect transient buffers of recently unused windows
|
||||||
if (!window->WasActive && !window->MemoryCompacted && window->LastTimeActive < memory_compact_start_time)
|
if (!window->WasActive && !window->MemoryCompacted && window->LastTimeActive < memory_compact_start_time)
|
||||||
|
2
imgui.h
2
imgui.h
@ -23,7 +23,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.89 WIP"
|
#define IMGUI_VERSION "1.89 WIP"
|
||||||
#define IMGUI_VERSION_NUM 18826
|
#define IMGUI_VERSION_NUM 18827
|
||||||
#define IMGUI_HAS_TABLE
|
#define IMGUI_HAS_TABLE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2112,6 +2112,7 @@ struct IMGUI_API ImGuiWindow
|
|||||||
bool HasCloseButton; // Set when the window has a close button (p_open != NULL)
|
bool HasCloseButton; // Set when the window has a close button (p_open != NULL)
|
||||||
signed char ResizeBorderHeld; // Current border being held for resize (-1: none, otherwise 0-3)
|
signed char ResizeBorderHeld; // Current border being held for resize (-1: none, otherwise 0-3)
|
||||||
short BeginCount; // Number of Begin() during the current frame (generally 0 or 1, 1+ if appending via multiple Begin/End pairs)
|
short BeginCount; // Number of Begin() during the current frame (generally 0 or 1, 1+ if appending via multiple Begin/End pairs)
|
||||||
|
short BeginCountPreviousFrame; // Number of Begin() during the previous frame
|
||||||
short BeginOrderWithinParent; // Begin() order within immediate parent window, if we are a child window. Otherwise 0.
|
short BeginOrderWithinParent; // Begin() order within immediate parent window, if we are a child window. Otherwise 0.
|
||||||
short BeginOrderWithinContext; // Begin() order within entire imgui context. This is mostly used for debugging submission order related issues.
|
short BeginOrderWithinContext; // Begin() order within entire imgui context. This is mostly used for debugging submission order related issues.
|
||||||
short FocusOrder; // Order within WindowsFocusOrder[], altered when windows are focused.
|
short FocusOrder; // Order within WindowsFocusOrder[], altered when windows are focused.
|
||||||
|
@ -7183,13 +7183,15 @@ void ImGui::EndMenu()
|
|||||||
// FIXME: This doesn't work if the parent BeginMenu() is not on a menu.
|
// FIXME: This doesn't work if the parent BeginMenu() is not on a menu.
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
ImGuiWindow* window = g.CurrentWindow;
|
ImGuiWindow* window = g.CurrentWindow;
|
||||||
if (g.NavMoveDir == ImGuiDir_Left && NavMoveRequestButNoResultYet() && window->DC.LayoutType == ImGuiLayoutType_Vertical)
|
IM_ASSERT(window->Flags & ImGuiWindowFlags_Popup); // Mismatched BeginMenu()/EndMenu() calls
|
||||||
if (g.NavWindow && (g.NavWindow->RootWindowForNav->Flags & ImGuiWindowFlags_Popup) && g.NavWindow->RootWindowForNav->ParentWindow == window)
|
|
||||||
{
|
|
||||||
ClosePopupToLevel(g.BeginPopupStack.Size, true);
|
|
||||||
NavMoveRequestCancel();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (window->BeginCount == window->BeginCountPreviousFrame)
|
||||||
|
if (g.NavMoveDir == ImGuiDir_Left && NavMoveRequestButNoResultYet() && window->DC.LayoutType == ImGuiLayoutType_Vertical)
|
||||||
|
if (g.NavWindow && (g.NavWindow->RootWindowForNav->Flags & ImGuiWindowFlags_Popup) && g.NavWindow->RootWindowForNav->ParentWindow == window)
|
||||||
|
{
|
||||||
|
ClosePopupToLevel(g.BeginPopupStack.Size, true);
|
||||||
|
NavMoveRequestCancel();
|
||||||
|
}
|
||||||
EndPopup();
|
EndPopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user