diff options
-rw-r--r-- | src/library_glfw.js | 24 | ||||
-rw-r--r-- | tests/glfw/glfwsample.c | 11 |
2 files changed, 21 insertions, 14 deletions
diff --git a/src/library_glfw.js b/src/library_glfw.js index f0e96a0a..41fef63f 100644 --- a/src/library_glfw.js +++ b/src/library_glfw.js @@ -175,16 +175,18 @@ var LibraryGLFW = { return; GLFW.savePosition(event); - if(event.target == Module["canvas"] || status == 0){//GLFW_RELEASE - if(status == 1){//GLFW_PRESS - try { - event.target.setCapture(); - } catch (e) {} - } - event.preventDefault(); - //DOM and glfw have the same button codes - Runtime.dynCall('vii', GLFW.mouseButtonFunc, [event['button'], status]); - } + if(event.target != Module["canvas"]) + return; + + if(status == 1){//GLFW_PRESS + try { + event.target.setCapture(); + } catch (e) {} + } + + event.preventDefault(); + //DOM and glfw have the same button codes + Runtime.dynCall('vii', GLFW.mouseButtonFunc, [event['button'], status]); }, onMouseButtonDown: function(event){ @@ -427,7 +429,7 @@ var LibraryGLFW = { }, glfwGetMouseButton : function( button ) { - return GLFW.buttons & button; + return (GLFW.buttons & (1 << button)) > 0; }, glfwGetMousePos : function( xpos, ypos ) { diff --git a/tests/glfw/glfwsample.c b/tests/glfw/glfwsample.c index 3d9be100..79b504b6 100644 --- a/tests/glfw/glfwsample.c +++ b/tests/glfw/glfwsample.c @@ -67,8 +67,8 @@ void Init() glfwSetWindowSizeCallback(OnResize); glfwSetWindowRefreshCallback(OnRefresh); glfwSetMouseWheelCallback(OnMouseWheel); - //glfwSetMousePosCallback(OnMouseMove); - //glfwSetMouseButtonCallback(OnMouseClick); + glfwSetMousePosCallback(OnMouseMove); + glfwSetMouseButtonCallback(OnMouseClick); // set the projection matrix to a normal frustum with a max depth of 50 glMatrixMode(GL_PROJECTION); @@ -323,7 +323,12 @@ void OnMouseClick( int button, int action ){ } void OnMouseMove( int x, int y ){ - printf("Mouse has been moved to %i %i\n", x, y); + int lState = glfwGetMouseButton(GLFW_MOUSE_BUTTON_LEFT); + + if (lState == GLFW_PRESS) + printf("Dragged %i to %i %i\n", GLFW_MOUSE_BUTTON_LEFT, x, y); + if(lState == GLFW_RELEASE) + printf("Moved %i to %i %i\n", GLFW_MOUSE_BUTTON_LEFT, x, y); } void OnMouseWheel( int pos ){ |