mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Nav: Fixed SetKeyboardFocusHere() or programmatic tabbing API from not working on windows with the ImGuiWindowFlags_NoNavInputs flag.
Amend/fix 3a078466a
			
			
This commit is contained in:
		| @@ -43,6 +43,9 @@ Breaking changes: | |||||||
|  |  | ||||||
| Other changes: | Other changes: | ||||||
|  |  | ||||||
|  | - Nav: Fixed SetKeyboardFocusHere() or programmatic tabbing API from not working on | ||||||
|  |   windows with the ImGuiWindowFlags_NoNavInputs flag (regression in 1.90.2, which | ||||||
|  |   among other things broke imgui_memory_editor). | ||||||
| - Menus, Popups: Fixed an issue where hovering a parent-menu upward would | - Menus, Popups: Fixed an issue where hovering a parent-menu upward would | ||||||
|   erroneously close the window. (#7325, #7287, #7063) |   erroneously close the window. (#7325, #7287, #7063) | ||||||
| - Popups: Fixed resizable popup minimum size being too small. Standardized minimum | - Popups: Fixed resizable popup minimum size being too small. Standardized minimum | ||||||
|   | |||||||
							
								
								
									
										35
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -11524,25 +11524,28 @@ static void ImGui::NavProcessItem() | |||||||
|  |  | ||||||
|     // Process Move Request (scoring for navigation) |     // Process Move Request (scoring for navigation) | ||||||
|     // FIXME-NAV: Consider policy for double scoring (scoring from NavScoringRect + scoring from a rect wrapped according to current wrapping policy) |     // FIXME-NAV: Consider policy for double scoring (scoring from NavScoringRect + scoring from a rect wrapped according to current wrapping policy) | ||||||
|     if (g.NavMoveScoringItems && (item_flags & ImGuiItemFlags_Disabled) == 0 && (window->Flags & ImGuiWindowFlags_NoNavInputs) == 0) |     if (g.NavMoveScoringItems && (item_flags & ImGuiItemFlags_Disabled) == 0) | ||||||
|     { |     { | ||||||
|         const bool is_tabbing = (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) != 0; |         if ((g.NavMoveFlags & ImGuiNavMoveFlags_FocusApi) || (window->Flags & ImGuiWindowFlags_NoNavInputs) != 0) | ||||||
|         if (is_tabbing) |  | ||||||
|         { |         { | ||||||
|             NavProcessItemForTabbingRequest(id, item_flags, g.NavMoveFlags); |             const bool is_tabbing = (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) != 0; | ||||||
|         } |             if (is_tabbing) | ||||||
|         else if (g.NavId != id || (g.NavMoveFlags & ImGuiNavMoveFlags_AllowCurrentNavId)) |             { | ||||||
|         { |                 NavProcessItemForTabbingRequest(id, item_flags, g.NavMoveFlags); | ||||||
|             ImGuiNavItemData* result = (window == g.NavWindow) ? &g.NavMoveResultLocal : &g.NavMoveResultOther; |             } | ||||||
|             if (NavScoreItem(result)) |             else if (g.NavId != id || (g.NavMoveFlags & ImGuiNavMoveFlags_AllowCurrentNavId)) | ||||||
|                 NavApplyItemToResult(result); |             { | ||||||
|  |                 ImGuiNavItemData* result = (window == g.NavWindow) ? &g.NavMoveResultLocal : &g.NavMoveResultOther; | ||||||
|  |                 if (NavScoreItem(result)) | ||||||
|  |                     NavApplyItemToResult(result); | ||||||
|  |  | ||||||
|             // Features like PageUp/PageDown need to maintain a separate score for the visible set of items. |                 // Features like PageUp/PageDown need to maintain a separate score for the visible set of items. | ||||||
|             const float VISIBLE_RATIO = 0.70f; |                 const float VISIBLE_RATIO = 0.70f; | ||||||
|             if ((g.NavMoveFlags & ImGuiNavMoveFlags_AlsoScoreVisibleSet) && window->ClipRect.Overlaps(nav_bb)) |                 if ((g.NavMoveFlags & ImGuiNavMoveFlags_AlsoScoreVisibleSet) && window->ClipRect.Overlaps(nav_bb)) | ||||||
|                 if (ImClamp(nav_bb.Max.y, window->ClipRect.Min.y, window->ClipRect.Max.y) - ImClamp(nav_bb.Min.y, window->ClipRect.Min.y, window->ClipRect.Max.y) >= (nav_bb.Max.y - nav_bb.Min.y) * VISIBLE_RATIO) |                     if (ImClamp(nav_bb.Max.y, window->ClipRect.Min.y, window->ClipRect.Max.y) - ImClamp(nav_bb.Min.y, window->ClipRect.Min.y, window->ClipRect.Max.y) >= (nav_bb.Max.y - nav_bb.Min.y) * VISIBLE_RATIO) | ||||||
|                     if (NavScoreItem(&g.NavMoveResultLocalVisible)) |                         if (NavScoreItem(&g.NavMoveResultLocalVisible)) | ||||||
|                         NavApplyItemToResult(&g.NavMoveResultLocalVisible); |                             NavApplyItemToResult(&g.NavMoveResultLocalVisible); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -24,7 +24,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.90.4 WIP" | #define IMGUI_VERSION       "1.90.4 WIP" | ||||||
| #define IMGUI_VERSION_NUM   19032 | #define IMGUI_VERSION_NUM   19033 | ||||||
| #define IMGUI_HAS_TABLE | #define IMGUI_HAS_TABLE | ||||||
|  |  | ||||||
| /* | /* | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user