mirror of
https://github.com/ocornut/imgui.git
synced 2026-04-20 06:20:58 +00:00
IO: added ClearInputMouse(). made ClearInputKeys() not clear mouse data. (#4921)
Amend 6aa408c6a
This commit is contained in:
21
imgui.cpp
21
imgui.cpp
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user