From b12ac2c44c55a0b559ceb0af98c26801934a9695 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Tue, 17 May 2005 08:04:48 +0000 Subject: [PATCH] Mouse: Allow delta queries when not grabbed. --- src/java/org/lwjgl/input/Mouse.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/java/org/lwjgl/input/Mouse.java b/src/java/org/lwjgl/input/Mouse.java index ae0bcacf..0790f3b4 100644 --- a/src/java/org/lwjgl/input/Mouse.java +++ b/src/java/org/lwjgl/input/Mouse.java @@ -293,6 +293,8 @@ public class Mouse { x += poll_coord1; y += poll_coord2; } else { + dx = poll_coord1 - x; + dy = poll_coord2 - y; x = poll_coord1; y = poll_coord2; } @@ -367,8 +369,12 @@ public class Mouse { event_x += event_dx; event_y += event_dy; } else { - event_x = readBuffer.get(); - event_y = readBuffer.get(); + int new_event_x = readBuffer.get(); + int new_event_y = readBuffer.get(); + event_dx = new_event_x - event_x; + event_dy = new_event_y - event_y; + event_x = new_event_x; + event_y = new_event_y; } event_x = Math.min(Display.getDisplayMode().getWidth() - 1, Math.max(0, event_x)); event_y = Math.min(Display.getDisplayMode().getHeight() - 1, Math.max(0, event_y)); @@ -400,8 +406,6 @@ public class Mouse { * @return Current events delta x. Only valid when the mouse is grabbed. */ public static int getEventDX() { - if (!isGrabbed()) - throw new IllegalStateException("X, Y deltas are only available when the mouse is grabbed. Use getEventX()/getEventY() instead."); return event_dx; } @@ -409,8 +413,6 @@ public class Mouse { * @return Current events delta y. Only valid when the mouse is grabbed. */ public static int getEventDY() { - if (!isGrabbed()) - throw new IllegalStateException("X, Y deltas are only available when the mouse is grabbed. Use getEventX()/getEventY() instead."); return event_dy; } @@ -459,8 +461,6 @@ public class Mouse { * @return Movement on the x axis since last time getDX() was called. Only valid when the mouse is grabbed. */ public static int getDX() { - if (!isGrabbed()) - throw new IllegalStateException("X, Y deltas are only available when the mouse is grabbed. Use getEventX()/getEventY() instead."); int result = dx; dx = 0; return result; @@ -470,8 +470,6 @@ public class Mouse { * @return Movement on the y axis since last time getDY() was called. Only valid when the mouse is grabbed. */ public static int getDY() { - if (!isGrabbed()) - throw new IllegalStateException("X, Y deltas are only available when the mouse is grabbed. Use getEventX()/getEventY() instead."); int result = dy; dy = 0; return result;