Fix CALayer/Display.setParent() initial position bug on OS X.

This commit is contained in:
kappaOne 2013-11-03 14:02:22 +00:00
parent ec9b14090b
commit cd666c66cf
2 changed files with 26 additions and 6 deletions

View File

@ -83,6 +83,26 @@ abstract class MacOSXCanvasPeerInfo extends MacOSXPeerInfo {
// fix for CALayer position not covering Canvas due to a Java 7 bug
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7172187
addComponentListener(component);
if (SwingUtilities.getWindowAncestor(component.getParent()) != null) {
Point componentPosition = SwingUtilities.convertPoint(component, component.getLocation(), null);
Point parentPosition = SwingUtilities.convertPoint(component.getParent(), component.getLocation(), null);
if (componentPosition.getX() == parentPosition.getX() && componentPosition.getY() == parentPosition.getY()) {
insets = getWindowInsets(component);
top = insets != null ? insets.top : 0;
left = insets != null ? insets.left : 0;
int x = (int)componentPosition.getX()-left;
int y = (int)-componentPosition.getY()+top-component.getHeight();
int width = component.getWidth();
int height = component.getHeight();
nSetLayerBounds(getHandle(), x, y, width, height);
}
}
}
}

View File

@ -52,13 +52,13 @@
enum {
NSControlLeftKeyMask = 0x0001,
NSControlRightKeyMask = 0x2000,
NSShiftLeftKeyMask = 0x0002,
NSShiftRightKeyMask = 0x0004,
NSCommandLeftKeyMask = 0x0008,
NSControlRightKeyMask = 0x2000,
NSShiftLeftKeyMask = 0x0002,
NSShiftRightKeyMask = 0x0004,
NSCommandLeftKeyMask = 0x0008,
NSCommandRightKeyMask = 0x0010,
NSAlternateLeftKeyMask = 0x0020,
NSAlternateRightKeyMask = 0x0040
NSAlternateLeftKeyMask = 0x0020,
NSAlternateRightKeyMask = 0x0040
};
@class NSOpenGLContext, NSOpenGLPixelFormat, MacOSXOpenGLView, MacOSXKeyableWindow;