mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Nav: Fixed ButtonBehavior mistakenly setting active id when the Activate button is held and we have a new NavId, which affected browsing some popups (#787)
This commit is contained in:
		
							
								
								
									
										12
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -6575,12 +6575,16 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | |||||||
|         hovered = true; |         hovered = true; | ||||||
|         if (!g.NavWindowingTarget && IsNavInputDown(ImGuiNavInput_PadActivate)) |         if (!g.NavWindowingTarget && IsNavInputDown(ImGuiNavInput_PadActivate)) | ||||||
|         { |         { | ||||||
|             // Set active id so it can be queried by user via IsItemActive(), etc. but don't react to it ourselves |             bool nav_pressed = IsNavInputPressed(ImGuiNavInput_PadActivate, (flags & ImGuiButtonFlags_Repeat) ? ImGuiNavReadMode_Repeat : ImGuiNavReadMode_Pressed); | ||||||
|             g.NavActivateId = id; |             if (nav_pressed) | ||||||
|  |                 pressed = true; | ||||||
|  |             if (nav_pressed || g.ActiveId == id) | ||||||
|  |             { | ||||||
|  |                 // Set active id so it can be queried by user via IsItemActive(), equivalent of holding the mouse button. | ||||||
|  |                 g.NavActivateId = id; // This is so SetActiveId assign a Nav source | ||||||
|                 SetActiveID(id, window); |                 SetActiveID(id, window); | ||||||
|                 g.ActiveIdAllowNavDirFlags = (1 << ImGuiDir_Left) | (1 << ImGuiDir_Right) | (1 << ImGuiDir_Up) | (1 << ImGuiDir_Down); |                 g.ActiveIdAllowNavDirFlags = (1 << ImGuiDir_Left) | (1 << ImGuiDir_Right) | (1 << ImGuiDir_Up) | (1 << ImGuiDir_Down); | ||||||
|             if (IsNavInputPressed(ImGuiNavInput_PadActivate, (flags & ImGuiButtonFlags_Repeat) ? ImGuiNavReadMode_Repeat : ImGuiNavReadMode_Pressed)) |             } | ||||||
|                 pressed = true; |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user