From c4806b95325c5db87345e494248d181035eb763d Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Mon, 30 Jan 2012 22:59:38 +0100 Subject: [PATCH] Merged cursor enter/leave callbacks. --- include/GL/glfw3.h | 4 +--- src/input.c | 35 ++++------------------------------- src/internal.h | 4 +--- src/x11_window.c | 4 ++-- tests/events.c | 13 +++++-------- 5 files changed, 13 insertions(+), 47 deletions(-) diff --git a/include/GL/glfw3.h b/include/GL/glfw3.h index 5bf080bd..31d8f199 100644 --- a/include/GL/glfw3.h +++ b/include/GL/glfw3.h @@ -474,8 +474,7 @@ typedef void (* GLFWwindowfocusfun)(GLFWwindow,int); typedef void (* GLFWwindowiconifyfun)(GLFWwindow,int); typedef void (* GLFWmousebuttonfun)(GLFWwindow,int,int); typedef void (* GLFWmouseposfun)(GLFWwindow,int,int); -typedef void (* GLFWcursorenterfun)(GLFWwindow); -typedef void (* GLFWcursorleavefun)(GLFWwindow); +typedef void (* GLFWcursorenterfun)(GLFWwindow,int); typedef void (* GLFWscrollfun)(GLFWwindow,int,int); typedef void (* GLFWkeyfun)(GLFWwindow,int,int); typedef void (* GLFWcharfun)(GLFWwindow,int); @@ -576,7 +575,6 @@ GLFWAPI void glfwSetCharCallback(GLFWcharfun cbfun); GLFWAPI void glfwSetMouseButtonCallback(GLFWmousebuttonfun cbfun); GLFWAPI void glfwSetMousePosCallback(GLFWmouseposfun cbfun); GLFWAPI void glfwSetCursorEnterCallback(GLFWcursorenterfun cbfun); -GLFWAPI void glfwSetCursorLeaveCallback(GLFWcursorleavefun cbfun); GLFWAPI void glfwSetScrollCallback(GLFWscrollfun cbfun); /* Joystick input */ diff --git a/src/input.c b/src/input.c index 903cb054..01d99de3 100644 --- a/src/input.c +++ b/src/input.c @@ -147,24 +147,13 @@ void _glfwInputCursorMotion(_GLFWwindow* window, int x, int y) //======================================================================== -// Register cursor enter events +// Register cursor enter/leave events //======================================================================== -void _glfwInputCursorEnter(_GLFWwindow* window) +void _glfwInputCursorEnter(_GLFWwindow* window, int entered) { if (_glfwLibrary.cursorEnterCallback) - _glfwLibrary.cursorEnterCallback(window); -} - - -//======================================================================== -// Register cursor leave events -//======================================================================== - -void _glfwInputCursorLeave(_GLFWwindow* window) -{ - if (_glfwLibrary.cursorLeaveCallback) - _glfwLibrary.cursorLeaveCallback(window); + _glfwLibrary.cursorEnterCallback(window, entered); } @@ -443,7 +432,7 @@ GLFWAPI void glfwSetMousePosCallback(GLFWmouseposfun cbfun) //======================================================================== -// Set callback function for cursor enter events +// Set callback function for cursor enter/leave events //======================================================================== GLFWAPI void glfwSetCursorEnterCallback(GLFWcursorenterfun cbfun) @@ -458,22 +447,6 @@ GLFWAPI void glfwSetCursorEnterCallback(GLFWcursorenterfun cbfun) } -//======================================================================== -// Set callback function for cursor enter events -//======================================================================== - -GLFWAPI void glfwSetCursorLeaveCallback(GLFWcursorleavefun cbfun) -{ - if (!_glfwInitialized) - { - _glfwSetError(GLFW_NOT_INITIALIZED, NULL); - return; - } - - _glfwLibrary.cursorLeaveCallback = cbfun; -} - - //======================================================================== // Set callback function for scroll events //======================================================================== diff --git a/src/internal.h b/src/internal.h index db46f6c4..cabafeb4 100644 --- a/src/internal.h +++ b/src/internal.h @@ -238,7 +238,6 @@ struct _GLFWlibrary GLFWmousebuttonfun mouseButtonCallback; GLFWmouseposfun mousePosCallback; GLFWcursorenterfun cursorEnterCallback; - GLFWcursorleavefun cursorLeaveCallback; GLFWscrollfun scrollCallback; GLFWkeyfun keyCallback; GLFWcharfun charCallback; @@ -354,8 +353,7 @@ void _glfwInputChar(_GLFWwindow* window, int character); void _glfwInputScroll(_GLFWwindow* window, int x, int y); void _glfwInputMouseClick(_GLFWwindow* window, int button, int action); void _glfwInputCursorMotion(_GLFWwindow* window, int x, int y); -void _glfwInputCursorEnter(_GLFWwindow* window); -void _glfwInputCursorLeave(_GLFWwindow* window); +void _glfwInputCursorEnter(_GLFWwindow* window, int entered); // OpenGL context helpers (opengl.c) int _glfwStringInExtensionString(const char* string, const GLubyte* extensions); diff --git a/src/x11_window.c b/src/x11_window.c index ad34eb81..ffe27722 100644 --- a/src/x11_window.c +++ b/src/x11_window.c @@ -1194,7 +1194,7 @@ static void processSingleEvent(void) if (window->cursorMode == GLFW_CURSOR_HIDDEN) hideMouseCursor(window); - _glfwInputCursorEnter(window); + _glfwInputCursorEnter(window, GL_TRUE); break; } @@ -1211,7 +1211,7 @@ static void processSingleEvent(void) if (window->cursorMode == GLFW_CURSOR_HIDDEN) showMouseCursor(window); - _glfwInputCursorLeave(window); + _glfwInputCursorEnter(window, GL_FALSE); break; } diff --git a/tests/events.c b/tests/events.c index 292da3ce..f276573e 100644 --- a/tests/events.c +++ b/tests/events.c @@ -274,14 +274,12 @@ static void mouse_position_callback(GLFWwindow window, int x, int y) printf("%08x at %0.3f: Mouse position: %i %i\n", counter++, glfwGetTime(), x, y); } -static void cursor_enter_callback(GLFWwindow window) +static void cursor_enter_callback(GLFWwindow window, int entered) { - printf("%08x at %0.3f: Cursor entered window\n", counter++, glfwGetTime()); -} - -static void cursor_leave_callback(GLFWwindow window) -{ - printf("%08x at %0.3f: Cursor left window\n", counter++, glfwGetTime()); + printf("%08x at %0.3f: Cursor %s window\n", + counter++, + glfwGetTime(), + entered ? "entered" : "left"); } static void scroll_callback(GLFWwindow window, int x, int y) @@ -362,7 +360,6 @@ int main(void) glfwSetMouseButtonCallback(mouse_button_callback); glfwSetMousePosCallback(mouse_position_callback); glfwSetCursorEnterCallback(cursor_enter_callback); - glfwSetCursorLeaveCallback(cursor_leave_callback); glfwSetScrollCallback(scroll_callback); glfwSetKeyCallback(key_callback); glfwSetCharCallback(char_callback);