From ed9c5a7f079ce682ddef3f1b6f710f0360698042 Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 17 Aug 2021 20:33:27 +0200 Subject: [PATCH] IO: set io.KeyModsPrev in EndFrame() to tolerate backend writing to io.KeyMods without breaking. (#4439) Amend ff428f1 --- imgui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imgui.cpp b/imgui.cpp index 0bdc593796e3..108f255350c1 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -4049,7 +4049,6 @@ void ImGui::NewFrame() // Update keyboard input state // Synchronize io.KeyMods with individual modifiers io.KeyXXX bools - g.IO.KeyModsPrev = g.IO.KeyMods; g.IO.KeyMods = GetMergedKeyModFlags(); memcpy(g.IO.KeysDownDurationPrev, g.IO.KeysDownDuration, sizeof(g.IO.KeysDownDuration)); for (int i = 0; i < IM_ARRAYSIZE(g.IO.KeysDown); i++) @@ -4487,6 +4486,7 @@ void ImGui::EndFrame() // Clear Input data for next frame g.IO.MouseWheel = g.IO.MouseWheelH = 0.0f; g.IO.InputQueueCharacters.resize(0); + g.IO.KeyModsPrev = g.IO.KeyMods; // doing it here is better than in NewFrame() as we'll tolerate backend writing to KeyMods. If we want to firmly disallow it we should detect it. memset(g.IO.NavInputs, 0, sizeof(g.IO.NavInputs)); CallContextHooks(&g, ImGuiContextHookType_EndFramePost);