mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01: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:
		| @@ -137,6 +137,8 @@ Other Changes: | ||||
|   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 | ||||
|   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: 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. | ||||
|   | ||||
| @@ -4608,9 +4608,10 @@ void ImGui::NewFrame() | ||||
|     { | ||||
|         ImGuiWindow* window = g.Windows[i]; | ||||
|         window->WasActive = window->Active; | ||||
|         window->BeginCount = 0; | ||||
|         window->Active = false; | ||||
|         window->WriteAccessed = false; | ||||
|         window->BeginCountPreviousFrame = window->BeginCount; | ||||
|         window->BeginCount = 0; | ||||
|  | ||||
|         // Garbage collect transient buffers of recently unused windows | ||||
|         if (!window->WasActive && !window->MemoryCompacted && window->LastTimeActive < memory_compact_start_time) | ||||
|   | ||||
							
								
								
									
										2
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -23,7 +23,7 @@ | ||||
| // Library Version | ||||
| // (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_NUM           18826 | ||||
| #define IMGUI_VERSION_NUM           18827 | ||||
| #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) | ||||
|     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                   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                   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. | ||||
|   | ||||
| @@ -7183,13 +7183,15 @@ void ImGui::EndMenu() | ||||
|     // FIXME: This doesn't work if the parent BeginMenu() is not on a menu. | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     ImGuiWindow* window = g.CurrentWindow; | ||||
|     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(); | ||||
|         } | ||||
|     IM_ASSERT(window->Flags & ImGuiWindowFlags_Popup);  // Mismatched BeginMenu()/EndMenu() calls | ||||
|  | ||||
|     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(); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user