IO: Added simple (incomplete) filter for duplicates to reduce data spam. (#4921, #4858)
diff --git a/imgui.cpp b/imgui.cpp
index fd1a10f..e64d973 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -1280,6 +1280,19 @@
if (ImGui::IsGamepadKey(key))
BackendUsingLegacyNavInputArray = false;
+ // Partial filter of duplicates (not strictly needed, but makes data neater in particular for key mods and gamepad values which are most commonly spmamed)
+ ImGuiKeyData* key_data = ImGui::GetKeyData(key);
+ if (key_data->Down == down && key_data->AnalogValue == analog_value)
+ {
+ bool found = false;
+ for (int n = g.InputEventsQueue.Size - 1; n >= 0 && !found; n--)
+ if (g.InputEventsQueue[n].Type == ImGuiInputEventType_Key && g.InputEventsQueue[n].Key.Key == key)
+ found = true;
+ if (!found)
+ return;
+ }
+
+ // Add event
ImGuiInputEvent e;
e.Type = ImGuiInputEventType_Key;
e.Source = ImGui::IsGamepadKey(key) ? ImGuiInputSource_Gamepad : ImGuiInputSource_Keyboard;