Browse Source

Fixed broken key repeat detection.

Camilla Berglund 11 năm trước cách đây
mục cha
commit
dc5c264e26
1 tập tin đã thay đổi với 6 bổ sung1 xóa
  1. 6 1
      src/input.c

+ 6 - 1
src/input.c

@@ -132,15 +132,20 @@ void _glfwInputKey(_GLFWwindow* window, int key, int scancode, int action, int m
 {
 {
     if (key >= 0 && key <= GLFW_KEY_LAST)
     if (key >= 0 && key <= GLFW_KEY_LAST)
     {
     {
+        GLboolean repeated = GL_FALSE;
+
         if (action == GLFW_RELEASE && window->key[key] == GLFW_RELEASE)
         if (action == GLFW_RELEASE && window->key[key] == GLFW_RELEASE)
             return;
             return;
 
 
+        if (action == GLFW_PRESS && window->key[key] == GLFW_PRESS)
+            repeated = GL_TRUE;
+
         if (action == GLFW_RELEASE && window->stickyKeys)
         if (action == GLFW_RELEASE && window->stickyKeys)
             window->key[key] = _GLFW_STICK;
             window->key[key] = _GLFW_STICK;
         else
         else
             window->key[key] = (char) action;
             window->key[key] = (char) action;
 
 
-        if (action == GLFW_PRESS && window->key[key] == GLFW_PRESS)
+        if (repeated)
             action = GLFW_REPEAT;
             action = GLFW_REPEAT;
     }
     }