|
@@ -522,90 +522,102 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* handle, int mode, int value)
|
|
|
|
|
|
_GLFW_REQUIRE_INIT();
|
|
|
|
|
|
- if (mode == GLFW_CURSOR)
|
|
|
+ switch (mode)
|
|
|
{
|
|
|
- if (value != GLFW_CURSOR_NORMAL &&
|
|
|
- value != GLFW_CURSOR_HIDDEN &&
|
|
|
- value != GLFW_CURSOR_DISABLED)
|
|
|
+ case GLFW_CURSOR:
|
|
|
{
|
|
|
- _glfwInputError(GLFW_INVALID_ENUM,
|
|
|
- "Invalid cursor mode 0x%08X",
|
|
|
- value);
|
|
|
- return;
|
|
|
- }
|
|
|
+ if (value != GLFW_CURSOR_NORMAL &&
|
|
|
+ value != GLFW_CURSOR_HIDDEN &&
|
|
|
+ value != GLFW_CURSOR_DISABLED)
|
|
|
+ {
|
|
|
+ _glfwInputError(GLFW_INVALID_ENUM,
|
|
|
+ "Invalid cursor mode 0x%08X",
|
|
|
+ value);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- if (window->cursorMode == value)
|
|
|
- return;
|
|
|
+ if (window->cursorMode == value)
|
|
|
+ return;
|
|
|
|
|
|
- window->cursorMode = value;
|
|
|
+ window->cursorMode = value;
|
|
|
|
|
|
- _glfw.platform.getCursorPos(window,
|
|
|
- &window->virtualCursorPosX,
|
|
|
- &window->virtualCursorPosY);
|
|
|
- _glfw.platform.setCursorMode(window, value);
|
|
|
- }
|
|
|
- else if (mode == GLFW_STICKY_KEYS)
|
|
|
- {
|
|
|
- value = value ? GLFW_TRUE : GLFW_FALSE;
|
|
|
- if (window->stickyKeys == value)
|
|
|
+ _glfw.platform.getCursorPos(window,
|
|
|
+ &window->virtualCursorPosX,
|
|
|
+ &window->virtualCursorPosY);
|
|
|
+ _glfw.platform.setCursorMode(window, value);
|
|
|
return;
|
|
|
+ }
|
|
|
|
|
|
- if (!value)
|
|
|
+ case GLFW_STICKY_KEYS:
|
|
|
{
|
|
|
- int i;
|
|
|
+ value = value ? GLFW_TRUE : GLFW_FALSE;
|
|
|
+ if (window->stickyKeys == value)
|
|
|
+ return;
|
|
|
|
|
|
- // Release all sticky keys
|
|
|
- for (i = 0; i <= GLFW_KEY_LAST; i++)
|
|
|
+ if (!value)
|
|
|
{
|
|
|
- if (window->keys[i] == _GLFW_STICK)
|
|
|
- window->keys[i] = GLFW_RELEASE;
|
|
|
+ int i;
|
|
|
+
|
|
|
+ // Release all sticky keys
|
|
|
+ for (i = 0; i <= GLFW_KEY_LAST; i++)
|
|
|
+ {
|
|
|
+ if (window->keys[i] == _GLFW_STICK)
|
|
|
+ window->keys[i] = GLFW_RELEASE;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- window->stickyKeys = value;
|
|
|
- }
|
|
|
- else if (mode == GLFW_STICKY_MOUSE_BUTTONS)
|
|
|
- {
|
|
|
- value = value ? GLFW_TRUE : GLFW_FALSE;
|
|
|
- if (window->stickyMouseButtons == value)
|
|
|
+ window->stickyKeys = value;
|
|
|
return;
|
|
|
+ }
|
|
|
|
|
|
- if (!value)
|
|
|
+ case GLFW_STICKY_MOUSE_BUTTONS:
|
|
|
{
|
|
|
- int i;
|
|
|
+ value = value ? GLFW_TRUE : GLFW_FALSE;
|
|
|
+ if (window->stickyMouseButtons == value)
|
|
|
+ return;
|
|
|
|
|
|
- // Release all sticky mouse buttons
|
|
|
- for (i = 0; i <= GLFW_MOUSE_BUTTON_LAST; i++)
|
|
|
+ if (!value)
|
|
|
{
|
|
|
- if (window->mouseButtons[i] == _GLFW_STICK)
|
|
|
- window->mouseButtons[i] = GLFW_RELEASE;
|
|
|
+ int i;
|
|
|
+
|
|
|
+ // Release all sticky mouse buttons
|
|
|
+ for (i = 0; i <= GLFW_MOUSE_BUTTON_LAST; i++)
|
|
|
+ {
|
|
|
+ if (window->mouseButtons[i] == _GLFW_STICK)
|
|
|
+ window->mouseButtons[i] = GLFW_RELEASE;
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ window->stickyMouseButtons = value;
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
- window->stickyMouseButtons = value;
|
|
|
- }
|
|
|
- else if (mode == GLFW_LOCK_KEY_MODS)
|
|
|
- {
|
|
|
- window->lockKeyMods = value ? GLFW_TRUE : GLFW_FALSE;
|
|
|
- }
|
|
|
- else if (mode == GLFW_RAW_MOUSE_MOTION)
|
|
|
- {
|
|
|
- if (!_glfw.platform.rawMouseMotionSupported())
|
|
|
+ case GLFW_LOCK_KEY_MODS:
|
|
|
{
|
|
|
- _glfwInputError(GLFW_PLATFORM_ERROR,
|
|
|
- "Raw mouse motion is not supported on this system");
|
|
|
+ window->lockKeyMods = value ? GLFW_TRUE : GLFW_FALSE;
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- value = value ? GLFW_TRUE : GLFW_FALSE;
|
|
|
- if (window->rawMouseMotion == value)
|
|
|
- return;
|
|
|
+ case GLFW_RAW_MOUSE_MOTION:
|
|
|
+ {
|
|
|
+ if (!_glfw.platform.rawMouseMotionSupported())
|
|
|
+ {
|
|
|
+ _glfwInputError(GLFW_PLATFORM_ERROR,
|
|
|
+ "Raw mouse motion is not supported on this system");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ value = value ? GLFW_TRUE : GLFW_FALSE;
|
|
|
+ if (window->rawMouseMotion == value)
|
|
|
+ return;
|
|
|
|
|
|
- window->rawMouseMotion = value;
|
|
|
- _glfw.platform.setRawMouseMotion(window, value);
|
|
|
+ window->rawMouseMotion = value;
|
|
|
+ _glfw.platform.setRawMouseMotion(window, value);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
- _glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode);
|
|
|
+
|
|
|
+ _glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode);
|
|
|
}
|
|
|
|
|
|
GLFWAPI int glfwRawMouseMotionSupported(void)
|