|
@@ -430,6 +430,7 @@ CODE
|
|
|
When you are not sure about an old symbol or function name, try using the Search/Find function of your IDE to look for comments or references in all imgui files.
|
|
|
You can read releases logs https://github.com/ocornut/imgui/releases for more details.
|
|
|
|
|
|
+ - 2024/06/21 (1.90.9) - io: ClearInputKeys() (first exposed in 1.89.8) doesn't clear mouse data, newly added ClearInputMouse() does.
|
|
|
- 2024/06/20 (1.90.9) - renamed ImGuiDragDropFlags_SourceAutoExpirePayload to ImGuiDragDropFlags_PayloadAutoExpire.
|
|
|
- 2024/06/18 (1.90.9) - style: renamed ImGuiCol_TabActive -> ImGuiCol_TabSelected, ImGuiCol_TabUnfocused -> ImGuiCol_TabDimmed, ImGuiCol_TabUnfocusedActive -> ImGuiCol_TabDimmedSelected.
|
|
|
- 2024/06/10 (1.90.9) - removed old nested structure: renaming ImGuiStorage::ImGuiStoragePair type to ImGuiStoragePair (simpler for many languages).
|
|
@@ -1453,7 +1454,7 @@ void ImGuiIO::ClearEventsQueue()
|
|
|
g.InputEventsQueue.clear();
|
|
|
}
|
|
|
|
|
|
-// Clear current keyboard/mouse/gamepad state + current frame text input buffer. Equivalent to releasing all keys/buttons.
|
|
|
+// Clear current keyboard/gamepad state + current frame text input buffer. Equivalent to releasing all keys/buttons.
|
|
|
void ImGuiIO::ClearInputKeys()
|
|
|
{
|
|
|
#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
|
|
@@ -1461,12 +1462,26 @@ void ImGuiIO::ClearInputKeys()
|
|
|
#endif
|
|
|
for (int n = 0; n < IM_ARRAYSIZE(KeysData); n++)
|
|
|
{
|
|
|
+ if (ImGui::IsMouseKey((ImGuiKey)(n + ImGuiKey_KeysData_OFFSET)))
|
|
|
+ continue;
|
|
|
KeysData[n].Down = false;
|
|
|
KeysData[n].DownDuration = -1.0f;
|
|
|
KeysData[n].DownDurationPrev = -1.0f;
|
|
|
}
|
|
|
KeyCtrl = KeyShift = KeyAlt = KeySuper = false;
|
|
|
KeyMods = ImGuiMod_None;
|
|
|
+ InputQueueCharacters.resize(0); // Behavior of old ClearInputCharacters().
|
|
|
+}
|
|
|
+
|
|
|
+void ImGuiIO::ClearInputMouse()
|
|
|
+{
|
|
|
+ for (ImGuiKey key = ImGuiKey_Mouse_BEGIN; key < ImGuiKey_Mouse_END; key = (ImGuiKey)(key + 1))
|
|
|
+ {
|
|
|
+ ImGuiKeyData* key_data = &KeysData[key - ImGuiKey_KeysData_OFFSET];
|
|
|
+ key_data->Down = false;
|
|
|
+ key_data->DownDuration = -1.0f;
|
|
|
+ key_data->DownDurationPrev = -1.0f;
|
|
|
+ }
|
|
|
MousePos = ImVec2(-FLT_MAX, -FLT_MAX);
|
|
|
for (int n = 0; n < IM_ARRAYSIZE(MouseDown); n++)
|
|
|
{
|
|
@@ -1474,7 +1489,6 @@ void ImGuiIO::ClearInputKeys()
|
|
|
MouseDownDuration[n] = MouseDownDurationPrev[n] = -1.0f;
|
|
|
}
|
|
|
MouseWheel = MouseWheelH = 0.0f;
|
|
|
- InputQueueCharacters.resize(0); // Behavior of old ClearInputCharacters().
|
|
|
}
|
|
|
|
|
|
// Removed this as it is ambiguous/misleading and generally incorrect to use with the existence of a higher-level input queue.
|
|
@@ -9632,7 +9646,10 @@ void ImGui::UpdateInputEvents(bool trickle_fast_inputs)
|
|
|
// - we clear in EndFrame() and not now in order allow application/user code polling this flag
|
|
|
// (e.g. custom backend may want to clear additional data, custom widgets may want to react with a "canceling" event).
|
|
|
if (g.IO.AppFocusLost)
|
|
|
+ {
|
|
|
g.IO.ClearInputKeys();
|
|
|
+ g.IO.ClearInputMouse();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
ImGuiID ImGui::GetKeyOwner(ImGuiKey key)
|