From 1cceacb3cd0312d5dd314f3d7f9372c1220b60b6 Mon Sep 17 00:00:00 2001 From: kappaOne Date: Fri, 19 Apr 2013 21:32:31 +0100 Subject: [PATCH] Fix OS X CALayer positioning and workaround Java 7 bug http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7172187 --- .../macosx/org_lwjgl_opengl_MacOSXCanvasPeerInfo.m | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/native/macosx/org_lwjgl_opengl_MacOSXCanvasPeerInfo.m b/src/native/macosx/org_lwjgl_opengl_MacOSXCanvasPeerInfo.m index 61c12cae..dd6ec410 100644 --- a/src/native/macosx/org_lwjgl_opengl_MacOSXCanvasPeerInfo.m +++ b/src/native/macosx/org_lwjgl_opengl_MacOSXCanvasPeerInfo.m @@ -113,8 +113,9 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXCanvasPeerInfo_nInitHandle if (surfaceLayers.layer != self) { surfaceLayers.layer = self; - // ensure the CALayer size is correct, needed for Java 7+ - self.frame = CGRectMake(0, 0, [self getWidth], [self getHeight]); + // ensure the CALayer size and position is correct, needed for Java 7+ + self.bounds = CGRectMake(0, 0, [self getWidth], [self getHeight]); + self.position = CGPointMake([self getWidth]+[self getWidth]/2.0, [self getHeight]+[self getHeight]/2.0); } } @@ -136,8 +137,9 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXCanvasPeerInfo_nInitHandle } - (void)setNeedsLayout { - // make sure the CALayer remains in bottom corner during resize - self.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); + // make sure the CALayer remains in correct location during resize + self.bounds = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); + self.position = CGPointMake(self.superlayer.position.x, self.superlayer.position.y); } - (int) getWidth {