Mac OS X: Fixed potential NPE in AWTUtil.getPointerLocation

This commit is contained in:
Elias Naur 2008-04-10 20:14:15 +00:00
parent 450634c49c
commit 3f4f832669
1 changed files with 10 additions and 6 deletions

View File

@ -39,6 +39,7 @@ import java.awt.Component;
import java.awt.Cursor; import java.awt.Cursor;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.GraphicsDevice; import java.awt.GraphicsDevice;
import java.awt.GraphicsConfiguration;
import java.awt.IllegalComponentStateException; import java.awt.IllegalComponentStateException;
import java.awt.Point; import java.awt.Point;
import java.awt.Robot; import java.awt.Robot;
@ -115,12 +116,15 @@ final class AWTUtil {
final Method getLocation_method = PointerInfo_class.getMethod("getLocation", null); final Method getLocation_method = PointerInfo_class.getMethod("getLocation", null);
return (Point)AccessController.doPrivileged(new PrivilegedExceptionAction() { return (Point)AccessController.doPrivileged(new PrivilegedExceptionAction() {
public final Object run() throws Exception { public final Object run() throws Exception {
Object pointer_info = getPointerInfo_method.invoke(null, null); GraphicsConfiguration config = component.getGraphicsConfiguration();
GraphicsDevice device = (GraphicsDevice)getDevice_method.invoke(pointer_info, null); if (config != null) {
if (device == component.getGraphicsConfiguration().getDevice()) { Object pointer_info = getPointerInfo_method.invoke(null, null);
return (Point)getLocation_method.invoke(pointer_info, null); GraphicsDevice device = (GraphicsDevice)getDevice_method.invoke(pointer_info, null);
} else if (device == config.getDevice()) {
return null; return (Point)getLocation_method.invoke(pointer_info, null);
}
}
return null;
} }
}); });
} catch (PrivilegedActionException e) { } catch (PrivilegedActionException e) {