From 4d0a4ac6fc92100a00accfe9d13e9c1b5f0a6bb3 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 22 Nov 2004 19:32:40 +0000 Subject: [PATCH] Mac OS X: Fix bogus repeated mouse deltas when grabbed --- src/java/org/lwjgl/opengl/MacOSXDisplay.java | 1 - src/java/org/lwjgl/opengl/MouseEventQueue.java | 17 +++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/java/org/lwjgl/opengl/MacOSXDisplay.java b/src/java/org/lwjgl/opengl/MacOSXDisplay.java index bc6e2fe5..6d285aa5 100644 --- a/src/java/org/lwjgl/opengl/MacOSXDisplay.java +++ b/src/java/org/lwjgl/opengl/MacOSXDisplay.java @@ -211,7 +211,6 @@ final class MacOSXDisplay implements DisplayImplementation { GL11.glViewport(0, 0, frame.getCanvas().syncGetWidth(), frame.getCanvas().syncGetHeight()); warpCursor(); } - mouse_queue.updateDeltas(); } private void warpCursor() { diff --git a/src/java/org/lwjgl/opengl/MouseEventQueue.java b/src/java/org/lwjgl/opengl/MouseEventQueue.java index 2fdf6950..befaa990 100644 --- a/src/java/org/lwjgl/opengl/MouseEventQueue.java +++ b/src/java/org/lwjgl/opengl/MouseEventQueue.java @@ -185,7 +185,6 @@ final class MouseEventQueue extends EventQueue implements MouseListener, MouseMo } public void mousePressed(MouseEvent e) { - updateDeltas(); handleButton(e); } @@ -195,16 +194,23 @@ final class MouseEventQueue extends EventQueue implements MouseListener, MouseMo } public void mouseReleased(MouseEvent e) { - updateDeltas(); handleButton(e); } + private void handleMotion(MouseEvent e) { + if (grabbed) { + updateDeltas(); + } else { + setCursorPos(e.getX(), e.getY()); + } + } + public void mouseDragged(MouseEvent e) { - setCursorPos(e.getX(), e.getY()); + handleMotion(e); } public void mouseMoved(MouseEvent e) { - setCursorPos(e.getX(), e.getY()); + handleMotion(e); } private synchronized void handleWheel(int amount) { @@ -212,7 +218,7 @@ final class MouseEventQueue extends EventQueue implements MouseListener, MouseMo putMouseEvent(-1, 0, amount); } - public void updateDeltas() { + private void updateDeltas() { if (!grabbed) return; synchronized (this) { @@ -229,7 +235,6 @@ final class MouseEventQueue extends EventQueue implements MouseListener, MouseMo public void mouseWheelMoved(MouseWheelEvent e) { int wheel_amount = -e.getWheelRotation()*WHEEL_SCALE; - updateDeltas(); handleWheel(wheel_amount); } }