From: <eli...@us...> - 2006-10-27 08:15:41
|
Revision: 2616 http://svn.sourceforge.net/java-game-lib/?rev=2616&view=rev Author: elias_naur Date: 2006-10-27 01:15:31 -0700 (Fri, 27 Oct 2006) Log Message: ----------- Mac OS X: Fixed cursor warping coordinates Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java 2006-10-27 06:27:58 UTC (rev 2615) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java 2006-10-27 08:15:31 UTC (rev 2616) @@ -43,6 +43,7 @@ import java.awt.event.MouseWheelListener; import java.awt.Component; import java.awt.Rectangle; +import java.awt.Point; import java.nio.ByteBuffer; import java.nio.IntBuffer; @@ -84,8 +85,9 @@ void warpCursor() { if (isGrabbed()) { Rectangle bounds = getComponent().getBounds(); - int x = bounds.x + bounds.width/2; - int y = bounds.y + bounds.height/2; + Point location_on_screen = getComponent().getLocationOnScreen(); + int x = location_on_screen.x + bounds.width/2; + int y = location_on_screen.y + bounds.height/2; nWarpCursor(x, y); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eli...@us...> - 2007-05-31 21:04:53
|
Revision: 2836 http://svn.sourceforge.net/java-game-lib/?rev=2836&view=rev Author: elias_naur Date: 2007-05-31 14:04:52 -0700 (Thu, 31 May 2007) Log Message: ----------- Mac OS X: Track grabbed state in MacOSXMouseEventQueue Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java 2007-05-31 21:00:13 UTC (rev 2835) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java 2007-05-31 21:04:52 UTC (rev 2836) @@ -53,6 +53,8 @@ final class MacOSXMouseEventQueue extends MouseEventQueue { private final IntBuffer delta_buffer = BufferUtils.createIntBuffer(2); + private static boolean is_grabbed; + MacOSXMouseEventQueue(Component component) { super(component); } @@ -60,7 +62,10 @@ public void setGrabbed(boolean grab) { super.setGrabbed(grab); warpCursor(); - nGrabMouse(grab); + if (is_grabbed != grab) { + is_grabbed = grab; + nGrabMouse(grab); + } } protected void resetCursorToCenter() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eli...@us...> - 2007-05-31 21:11:34
|
Revision: 2837 http://svn.sourceforge.net/java-game-lib/?rev=2837&view=rev Author: elias_naur Date: 2007-05-31 14:11:34 -0700 (Thu, 31 May 2007) Log Message: ----------- Mac OS X: Synchronized access to grabbed state Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java 2007-05-31 21:04:52 UTC (rev 2836) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java 2007-05-31 21:11:34 UTC (rev 2837) @@ -62,12 +62,16 @@ public void setGrabbed(boolean grab) { super.setGrabbed(grab); warpCursor(); + grabMouse(grab); + } + + private static synchronized void grabMouse(boolean grab) { if (is_grabbed != grab) { is_grabbed = grab; nGrabMouse(grab); } } - + protected void resetCursorToCenter() { super.resetCursorToCenter(); /* Clear accumulated deltas */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eli...@us...> - 2007-05-31 22:09:52
|
Revision: 2838 http://svn.sourceforge.net/java-game-lib/?rev=2838&view=rev Author: elias_naur Date: 2007-05-31 15:09:46 -0700 (Thu, 31 May 2007) Log Message: ----------- Mac OS X: When grabbing the mouse, skip the next event to avoid bogus deltas Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java 2007-05-31 21:11:34 UTC (rev 2837) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXMouseEventQueue.java 2007-05-31 22:09:46 UTC (rev 2838) @@ -53,6 +53,7 @@ final class MacOSXMouseEventQueue extends MouseEventQueue { private final IntBuffer delta_buffer = BufferUtils.createIntBuffer(2); + private boolean skip_event; private static boolean is_grabbed; MacOSXMouseEventQueue(Component component) { @@ -84,6 +85,10 @@ getMouseDeltas(delta_buffer); int dx = delta_buffer.get(0); int dy = -delta_buffer.get(1); + if (skip_event) { + skip_event = false; + return; + } if ( dx != 0 || dy != 0 ) { putMouseEventWithCoords((byte)-1, (byte)0, dx, dy, 0, nanos); addDelta(dx, dy); @@ -92,6 +97,10 @@ } void warpCursor() { + synchronized (this) { + // If we're going to warp the cursor position, we'll skip the next event to avoid bogus delta values + skip_event = isGrabbed(); + } if (isGrabbed()) { Rectangle bounds = getComponent().getBounds(); Point location_on_screen = getComponent().getLocationOnScreen(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |