diff options
| author | JMC47 <JMC4789@gmail.com> | 2023-07-28 17:22:20 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-28 17:22:20 -0400 |
| commit | a2a6473962ce3036aaa751d80152911e34b1e69d (patch) | |
| tree | 8050a7fe0ced4021df448d2ba3357ca96380f430 /Source/Core/VideoCommon/OnScreenUI.cpp | |
| parent | ed8911b2043bd654c30a0d51d43c1e6c77b8c845 (diff) | |
| parent | c2b495586d0b87e7dcef3d57164783045979f6d0 (diff) | |
Merge pull request #12065 from iwubcode/imgui_update
Externals / VideoCommon: update imgui to 1.89.7 (and implot to 0.15)
Diffstat (limited to 'Source/Core/VideoCommon/OnScreenUI.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/OnScreenUI.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/Source/Core/VideoCommon/OnScreenUI.cpp b/Source/Core/VideoCommon/OnScreenUI.cpp index 50e191a7ae..1919149629 100644 --- a/Source/Core/VideoCommon/OnScreenUI.cpp +++ b/Source/Core/VideoCommon/OnScreenUI.cpp @@ -356,35 +356,37 @@ void OnScreenUI::SetScale(float backbuffer_scale) } void OnScreenUI::SetKeyMap(const DolphinKeyMap& key_map) { - // Right now this is a 1:1 mapping. But might not be true later static constexpr DolphinKeyMap dolphin_to_imgui_map = { ImGuiKey_Tab, ImGuiKey_LeftArrow, ImGuiKey_RightArrow, ImGuiKey_UpArrow, ImGuiKey_DownArrow, ImGuiKey_PageUp, ImGuiKey_PageDown, ImGuiKey_Home, ImGuiKey_End, ImGuiKey_Insert, ImGuiKey_Delete, ImGuiKey_Backspace, - ImGuiKey_Space, ImGuiKey_Enter, ImGuiKey_Escape, ImGuiKey_KeyPadEnter, + ImGuiKey_Space, ImGuiKey_Enter, ImGuiKey_Escape, ImGuiKey_KeypadEnter, ImGuiKey_A, ImGuiKey_C, ImGuiKey_V, ImGuiKey_X, ImGuiKey_Y, ImGuiKey_Z, }; - static_assert(dolphin_to_imgui_map.size() == ImGuiKey_COUNT); // Fail if ImGui adds keys auto lock = GetImGuiLock(); if (!ImGui::GetCurrentContext()) return; + m_dolphin_to_imgui_map.clear(); for (int dolphin_key = 0; dolphin_key <= static_cast<int>(DolphinKey::Z); dolphin_key++) { - int imgui_key = dolphin_to_imgui_map[DolphinKey(dolphin_key)]; + const int imgui_key = dolphin_to_imgui_map[DolphinKey(dolphin_key)]; if (imgui_key >= 0) - ImGui::GetIO().KeyMap[imgui_key] = (key_map[DolphinKey(dolphin_key)] & 0x1FF); + { + const int mapped_key = key_map[DolphinKey(dolphin_key)]; + m_dolphin_to_imgui_map[mapped_key & 0x1FF] = imgui_key; + } } } void OnScreenUI::SetKey(u32 key, bool is_down, const char* chars) { auto lock = GetImGuiLock(); - if (key < std::size(ImGui::GetIO().KeysDown)) - ImGui::GetIO().KeysDown[key] = is_down; + if (auto iter = m_dolphin_to_imgui_map.find(key); iter != m_dolphin_to_imgui_map.end()) + ImGui::GetIO().AddKeyEvent((ImGuiKey)iter->second, is_down); if (chars) ImGui::GetIO().AddInputCharactersUTF8(chars); |
