mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Examples: GLFW: using glfwSetCharModsCallback() to ensure characters aren't passed when using mods (fix #279)
This commit is contained in:
parent
06c7453ee2
commit
d80869189a
@ -128,10 +128,10 @@ void ImGui_ImplGlfwGL3_KeyCallback(GLFWwindow*, int key, int, int action, int mo
|
|||||||
io.KeyAlt = io.KeysDown[GLFW_KEY_LEFT_ALT] || io.KeysDown[GLFW_KEY_RIGHT_ALT];
|
io.KeyAlt = io.KeysDown[GLFW_KEY_LEFT_ALT] || io.KeysDown[GLFW_KEY_RIGHT_ALT];
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGui_ImplGlfwGL3_CharCallback(GLFWwindow*, unsigned int c)
|
void ImGui_ImplGlfwGL3_CharModsCallback(GLFWwindow*, unsigned int c, int mods)
|
||||||
{
|
{
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
if (c > 0 && c < 0x10000)
|
if ((mods & ~GLFW_MOD_SHIFT) == 0 && c > 0 && c < 0x10000)
|
||||||
io.AddInputCharacter((unsigned short)c);
|
io.AddInputCharacter((unsigned short)c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ bool ImGui_ImplGlfwGL3_Init(GLFWwindow* window, bool install_callbacks)
|
|||||||
glfwSetMouseButtonCallback(window, ImGui_ImplGlfwGL3_MouseButtonCallback);
|
glfwSetMouseButtonCallback(window, ImGui_ImplGlfwGL3_MouseButtonCallback);
|
||||||
glfwSetScrollCallback(window, ImGui_ImplGlfwGL3_ScrollCallback);
|
glfwSetScrollCallback(window, ImGui_ImplGlfwGL3_ScrollCallback);
|
||||||
glfwSetKeyCallback(window, ImGui_ImplGlfwGL3_KeyCallback);
|
glfwSetKeyCallback(window, ImGui_ImplGlfwGL3_KeyCallback);
|
||||||
glfwSetCharCallback(window, ImGui_ImplGlfwGL3_CharCallback);
|
glfwSetCharModsCallback(window, ImGui_ImplGlfwGL3_CharModsCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -17,4 +17,4 @@ bool ImGui_ImplGlfwGL3_CreateDeviceObjects();
|
|||||||
void ImGui_ImplGlfwGL3_MouseButtonCallback(GLFWwindow* window, int button, int action, int mods);
|
void ImGui_ImplGlfwGL3_MouseButtonCallback(GLFWwindow* window, int button, int action, int mods);
|
||||||
void ImGui_ImplGlfwGL3_ScrollCallback(GLFWwindow* window, double xoffset, double yoffset);
|
void ImGui_ImplGlfwGL3_ScrollCallback(GLFWwindow* window, double xoffset, double yoffset);
|
||||||
void ImGui_ImplGlfwGL3_KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods);
|
void ImGui_ImplGlfwGL3_KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods);
|
||||||
void ImGui_ImplGlfwGL3_CharCallback(GLFWwindow* window, unsigned int c);
|
void ImGui_ImplGlfwGL3_CharModsCallback(GLFWwindow* window, unsigned int c, int mods);
|
||||||
|
@ -127,10 +127,10 @@ void ImGui_ImplGlFw_KeyCallback(GLFWwindow*, int key, int, int action, int mods)
|
|||||||
io.KeyAlt = io.KeysDown[GLFW_KEY_LEFT_ALT] || io.KeysDown[GLFW_KEY_RIGHT_ALT];
|
io.KeyAlt = io.KeysDown[GLFW_KEY_LEFT_ALT] || io.KeysDown[GLFW_KEY_RIGHT_ALT];
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGui_ImplGlfw_CharCallback(GLFWwindow*, unsigned int c)
|
void ImGui_ImplGlfw_CharModsCallback(GLFWwindow*, unsigned int c, int mods)
|
||||||
{
|
{
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
if (c > 0 && c < 0x10000)
|
if ((mods & ~GLFW_MOD_SHIFT) == 0 && c > 0 && c < 0x10000)
|
||||||
io.AddInputCharacter((unsigned short)c);
|
io.AddInputCharacter((unsigned short)c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks)
|
|||||||
glfwSetMouseButtonCallback(window, ImGui_ImplGlfw_MouseButtonCallback);
|
glfwSetMouseButtonCallback(window, ImGui_ImplGlfw_MouseButtonCallback);
|
||||||
glfwSetScrollCallback(window, ImGui_ImplGlfw_ScrollCallback);
|
glfwSetScrollCallback(window, ImGui_ImplGlfw_ScrollCallback);
|
||||||
glfwSetKeyCallback(window, ImGui_ImplGlFw_KeyCallback);
|
glfwSetKeyCallback(window, ImGui_ImplGlFw_KeyCallback);
|
||||||
glfwSetCharCallback(window, ImGui_ImplGlfw_CharCallback);
|
glfwSetCharModsCallback(window, ImGui_ImplGlfw_CharModsCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -17,4 +17,4 @@ bool ImGui_ImplGlfw_CreateDeviceObjects();
|
|||||||
void ImGui_ImplGlfw_MouseButtonCallback(GLFWwindow* window, int button, int action, int mods);
|
void ImGui_ImplGlfw_MouseButtonCallback(GLFWwindow* window, int button, int action, int mods);
|
||||||
void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window, double xoffset, double yoffset);
|
void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window, double xoffset, double yoffset);
|
||||||
void ImGui_ImplGlFw_KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods);
|
void ImGui_ImplGlFw_KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods);
|
||||||
void ImGui_ImplGlfw_CharCallback(GLFWwindow* window, unsigned int c);
|
void ImGui_ImplGlfw_CharModsCallback(GLFWwindow* window, unsigned int c, int mods);
|
||||||
|
Loading…
Reference in New Issue
Block a user