From 4c5a2fe6447e5d999ab93cd59eaebbc6c1627a7a Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 28 Oct 2006 22:06:24 +0000 Subject: [PATCH] Fixed AWTUtil.setCursorPosition. Added check to LinuxAWTInput. --- src/java/org/lwjgl/opengl/AWTUtil.java | 5 +++-- src/java/org/lwjgl/opengl/LinuxAWTInput.java | 2 +- src/java/org/lwjgl/opengl/MacOSXDisplay.java | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/java/org/lwjgl/opengl/AWTUtil.java b/src/java/org/lwjgl/opengl/AWTUtil.java index 07456e3c..b287d5e1 100644 --- a/src/java/org/lwjgl/opengl/AWTUtil.java +++ b/src/java/org/lwjgl/opengl/AWTUtil.java @@ -108,8 +108,9 @@ final class AWTUtil { public static void setCursorPosition(Component component, Robot robot, int x, int y) { if (robot != null) { - int transformed_x = component.getX() + x; - int transformed_y = component.getY() + component.getHeight() - 1 - y; + Point location = component.getLocationOnScreen(); + int transformed_x = location.x + x; + int transformed_y = location.y + component.getHeight() - 1 - y; robot.mouseMove(transformed_x, transformed_y); } } diff --git a/src/java/org/lwjgl/opengl/LinuxAWTInput.java b/src/java/org/lwjgl/opengl/LinuxAWTInput.java index fe655802..aad3b1df 100644 --- a/src/java/org/lwjgl/opengl/LinuxAWTInput.java +++ b/src/java/org/lwjgl/opengl/LinuxAWTInput.java @@ -117,7 +117,7 @@ final class LinuxAWTInput extends AbstractAWTInput { try { LinuxPeerInfo linux_peer_info = (LinuxPeerInfo)peer_info; long new_window = linux_peer_info.getDrawable(); - if (new_window != cached_window) { + if (cached_mouse == null || new_window != cached_window) { ungrabInput(); cached_window = new_window; try { diff --git a/src/java/org/lwjgl/opengl/MacOSXDisplay.java b/src/java/org/lwjgl/opengl/MacOSXDisplay.java index 646c0e12..a45a5001 100644 --- a/src/java/org/lwjgl/opengl/MacOSXDisplay.java +++ b/src/java/org/lwjgl/opengl/MacOSXDisplay.java @@ -321,7 +321,7 @@ final class MacOSXDisplay implements DisplayImplementation { } public void setCursorPosition(int x, int y) { - AWTUtil.setCursorPosition(frame, robot, x, y); + AWTUtil.setCursorPosition(frame.getCanvas(), robot, x, y); } public void setNativeCursor(Object handle) throws LWJGLException {