mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	This commit is contained in:
		| @@ -46,6 +46,8 @@ Other changes: | ||||
|   be desirable to take advantage of this trick. (#4714) | ||||
| - Drag, Sliders: Fixed parsing of text input when '+' or '#' format flags are used | ||||
|   in the format string. (#6259) [@idbrii] | ||||
| - IO: Fixed support for calling io.AddXXXX functions fron inactive context (wrongly | ||||
|   advertised as supported in 1.89.4). (#6199, #6256, #5856) [@cfillion] | ||||
| - Backends: OpenGL3: Fixed GL loader crash when GL_VERSION returns NULL. (#6154, #4445, #3530) | ||||
| - Backends: GLFW: Fixed key modifiers handling on secondary viewports. (#6248, #6034) [@aiekick] | ||||
| - Examples: Windows: Added 'misc/debuggers/imgui.natstepfilter' file to all Visual Studio projects, | ||||
|   | ||||
							
								
								
									
										15
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -1349,9 +1349,9 @@ void ImGuiIO::ClearInputKeys() | ||||
|     MouseWheel = MouseWheelH = 0.0f; | ||||
| } | ||||
|  | ||||
| static ImGuiInputEvent* FindLatestInputEvent(ImGuiInputEventType type, int arg = -1) | ||||
| static ImGuiInputEvent* FindLatestInputEvent(ImGuiContext* ctx, ImGuiInputEventType type, int arg = -1) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     ImGuiContext& g = *ctx; | ||||
|     for (int n = g.InputEventsQueue.Size - 1; n >= 0; n--) | ||||
|     { | ||||
|         ImGuiInputEvent* e = &g.InputEventsQueue[n]; | ||||
| @@ -1393,8 +1393,11 @@ void ImGuiIO::AddKeyAnalogEvent(ImGuiKey key, bool down, float analog_value) | ||||
|         BackendUsingLegacyNavInputArray = false; | ||||
|  | ||||
|     // Filter duplicate (in particular: key mods and gamepad analog values are commonly spammed) | ||||
|     const ImGuiInputEvent* latest_event = FindLatestInputEvent(ImGuiInputEventType_Key, (int)key); | ||||
|     const ImGuiInputEvent* latest_event = FindLatestInputEvent(&g, ImGuiInputEventType_Key, (int)key); | ||||
|     ImGuiContext* prev_ctx = GImGui; | ||||
|     ImGui::SetCurrentContext(Ctx); | ||||
|     const ImGuiKeyData* key_data = ImGui::GetKeyData(key); | ||||
|     ImGui::SetCurrentContext(prev_ctx); | ||||
|     const bool latest_key_down = latest_event ? latest_event->Key.Down : key_data->Down; | ||||
|     const float latest_key_analog = latest_event ? latest_event->Key.AnalogValue : key_data->AnalogValue; | ||||
|     if (latest_key_down == down && latest_key_analog == analog_value) | ||||
| @@ -1460,7 +1463,7 @@ void ImGuiIO::AddMousePosEvent(float x, float y) | ||||
|     ImVec2 pos((x > -FLT_MAX) ? ImFloorSigned(x) : x, (y > -FLT_MAX) ? ImFloorSigned(y) : y); | ||||
|  | ||||
|     // Filter duplicate | ||||
|     const ImGuiInputEvent* latest_event = FindLatestInputEvent(ImGuiInputEventType_MousePos); | ||||
|     const ImGuiInputEvent* latest_event = FindLatestInputEvent(&g, ImGuiInputEventType_MousePos); | ||||
|     const ImVec2 latest_pos = latest_event ? ImVec2(latest_event->MousePos.PosX, latest_event->MousePos.PosY) : g.IO.MousePos; | ||||
|     if (latest_pos.x == pos.x && latest_pos.y == pos.y) | ||||
|         return; | ||||
| @@ -1482,7 +1485,7 @@ void ImGuiIO::AddMouseButtonEvent(int mouse_button, bool down) | ||||
|         return; | ||||
|  | ||||
|     // Filter duplicate | ||||
|     const ImGuiInputEvent* latest_event = FindLatestInputEvent(ImGuiInputEventType_MouseButton, (int)mouse_button); | ||||
|     const ImGuiInputEvent* latest_event = FindLatestInputEvent(&g, ImGuiInputEventType_MouseButton, (int)mouse_button); | ||||
|     const bool latest_button_down = latest_event ? latest_event->MouseButton.Down : g.IO.MouseDown[mouse_button]; | ||||
|     if (latest_button_down == down) | ||||
|         return; | ||||
| @@ -1519,7 +1522,7 @@ void ImGuiIO::AddFocusEvent(bool focused) | ||||
|     ImGuiContext& g = *Ctx; | ||||
|  | ||||
|     // Filter duplicate | ||||
|     const ImGuiInputEvent* latest_event = FindLatestInputEvent(ImGuiInputEventType_Focus); | ||||
|     const ImGuiInputEvent* latest_event = FindLatestInputEvent(&g, ImGuiInputEventType_Focus); | ||||
|     const bool latest_focused = latest_event ? latest_event->AppFocused.Focused : !g.IO.AppFocusLost; | ||||
|     if (latest_focused == focused) | ||||
|         return; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 cfillion
					cfillion