Skip to content

Commit 21c1814

Browse files
committed
fix d3d11 raw samples for Dear ImGui 1.91.5
1 parent 25c3f60 commit 21c1814

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

d3d11/imgui-d3d11.cc

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ typedef struct {
2828
} vs_params_t;
2929

3030
static void draw_imgui(ImDrawData*);
31+
static ImGuiKey as_imgui_key(int keycode);
3132

3233
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) {
3334
(void)hInstance; (void)hPrevInstance; (void)lpCmdLine; (void)nCmdShow;
@@ -44,37 +45,20 @@ int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
4445
stm_setup();
4546

4647
// input forwarding
47-
d3d11_mouse_pos([] (float x, float y) { ImGui::GetIO().MousePos = ImVec2(x, y); });
48-
d3d11_mouse_btn_down([] (int btn) { ImGui::GetIO().MouseDown[btn] = true; });
49-
d3d11_mouse_btn_up([] (int btn) { ImGui::GetIO().MouseDown[btn] = false; });
50-
d3d11_mouse_wheel([](float v) { ImGui::GetIO().MouseWheel = v; });
48+
d3d11_mouse_pos([] (float x, float y) { ImGui::GetIO().AddMousePosEvent(x, y); });
49+
d3d11_mouse_btn_down([] (int btn) { ImGui::GetIO().AddMouseButtonEvent(btn, true); });
50+
d3d11_mouse_btn_up([] (int btn) { ImGui::GetIO().AddMouseButtonEvent(btn, false); });
51+
d3d11_mouse_wheel([](float v) { ImGui::GetIO().AddMouseWheelEvent(0, v); });
5152
d3d11_char([] (wchar_t c) { ImGui::GetIO().AddInputCharacter(c); });
52-
d3d11_key_down([] (int key) { if (key < 512) ImGui::GetIO().KeysDown[key] = true; });
53-
d3d11_key_up([] (int key) { if (key < 512) ImGui::GetIO().KeysDown[key] = false; });
53+
d3d11_key_down([] (int key) { ImGui::GetIO().AddKeyEvent(as_imgui_key(key), true); });
54+
d3d11_key_up([] (int key) { ImGui::GetIO().AddKeyEvent(as_imgui_key(key), false); });
5455

5556
// setup Dear Imgui
5657
ImGui::CreateContext();
5758
ImGui::StyleColorsDark();
5859
ImGuiIO& io = ImGui::GetIO();
5960
io.IniFilename = nullptr;
6061
io.Fonts->AddFontDefault();
61-
io.KeyMap[ImGuiKey_Tab] = VK_TAB;
62-
io.KeyMap[ImGuiKey_LeftArrow] = VK_LEFT;
63-
io.KeyMap[ImGuiKey_RightArrow] = VK_RIGHT;
64-
io.KeyMap[ImGuiKey_UpArrow] = VK_UP;
65-
io.KeyMap[ImGuiKey_DownArrow] = VK_DOWN;
66-
io.KeyMap[ImGuiKey_Home] = VK_HOME;
67-
io.KeyMap[ImGuiKey_End] = VK_END;
68-
io.KeyMap[ImGuiKey_Delete] = VK_DELETE;
69-
io.KeyMap[ImGuiKey_Backspace] = VK_BACK;
70-
io.KeyMap[ImGuiKey_Enter] = VK_RETURN;
71-
io.KeyMap[ImGuiKey_Escape] = VK_ESCAPE;
72-
io.KeyMap[ImGuiKey_A] = 'A';
73-
io.KeyMap[ImGuiKey_C] = 'C';
74-
io.KeyMap[ImGuiKey_V] = 'V';
75-
io.KeyMap[ImGuiKey_X] = 'X';
76-
io.KeyMap[ImGuiKey_Y] = 'Y';
77-
io.KeyMap[ImGuiKey_Z] = 'Z';
7862

7963
// dynamic vertex- and index-buffers for imgui-generated geometry
8064
sg_buffer_desc vbuf_desc = { };
@@ -269,3 +253,20 @@ void draw_imgui(ImDrawData* draw_data) {
269253
}
270254
}
271255
}
256+
257+
static ImGuiKey as_imgui_key(int keycode) {
258+
switch (keycode) {
259+
case VK_TAB: return ImGuiKey_Tab;
260+
case VK_LEFT: return ImGuiKey_LeftArrow;
261+
case VK_RIGHT: return ImGuiKey_RightArrow;
262+
case VK_UP: return ImGuiKey_UpArrow;
263+
case VK_DOWN: return ImGuiKey_DownArrow;
264+
case VK_HOME: return ImGuiKey_Home;
265+
case VK_END: return ImGuiKey_End;
266+
case VK_DELETE: return ImGuiKey_Delete;
267+
case VK_BACK: return ImGuiKey_Backspace;
268+
case VK_RETURN: return ImGuiKey_Enter;
269+
case VK_ESCAPE: return ImGuiKey_Escape;
270+
default: return ImGuiKey_None;
271+
}
272+
}

0 commit comments

Comments
 (0)