diff options
Diffstat (limited to 'src/nativewindow/native/macosx/OSXmisc.m')
-rw-r--r-- | src/nativewindow/native/macosx/OSXmisc.m | 50 |
1 files changed, 7 insertions, 43 deletions
diff --git a/src/nativewindow/native/macosx/OSXmisc.m b/src/nativewindow/native/macosx/OSXmisc.m index 6c13d9c05..f5991b1b5 100644 --- a/src/nativewindow/native/macosx/OSXmisc.m +++ b/src/nativewindow/native/macosx/OSXmisc.m @@ -180,42 +180,6 @@ static NSScreen * OSXUtil_getNSScreenByCGDirectDisplayID(CGDirectDisplayID displ /* * Class: Java_jogamp_nativewindow_macosx_OSXUtil - * Method: getLocation0 - * Signature: (J)Lcom/jogamp/nativewindow/util/Point; - */ -JNIEXPORT jobject JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_GetLocation0 - (JNIEnv *env, jclass unused, jlong winOrView) -{ - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - - /** - * return location in 0/0 top-left space, - * OSX is 0/0 bottom-left space naturally - */ - NSObject *nsObj = (NSObject*) (intptr_t) winOrView; - NSWindow* win = NULL; - NSView* view = NULL; - - if( [nsObj isKindOfClass:[NSWindow class]] ) { - win = (NSWindow*) nsObj; - view = [win contentView]; - } else if( nsObj != NULL && [nsObj isKindOfClass:[NSView class]] ) { - view = (NSView*) nsObj; - win = [view window]; - } else { - NativewindowCommon_throwNewRuntimeException(env, "neither win nor view %p\n", nsObj); - } - NSRect viewFrame = [view frame]; - - jobject res = (*env)->NewObject(env, pointClz, pointCstr, (jint)viewFrame.origin.x, (jint)viewFrame.origin.y); - - [pool release]; - - return res; -} - -/* - * Class: Java_jogamp_nativewindow_macosx_OSXUtil * Method: getLocationOnScreen0 * Signature: (JII)Lcom/jogamp/nativewindow/util/Point; */ @@ -243,13 +207,13 @@ JNIEXPORT jobject JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_GetLocationOnS } NSRect viewFrame = [view frame]; - NSRect r; - r.origin.x = src_x; - r.origin.y = viewFrame.size.height - src_y; // y-flip for 0/0 top-left - r.size.width = 0; - r.size.height = 0; - // NSRect rS = [win convertRectToScreen: r]; // 10.7 - NSPoint oS = [win convertBaseToScreen: r.origin]; // BL-screen + NSPoint oS = NSMakePoint(src_x, src_y); + if( ![view isFlipped] ) { + // y-flip for 0/0 top-left: TL-view -> BL-view + oS.y = viewFrame.size.height - oS.y; + } + oS = [view convertPoint: oS toView:nil]; // BL-view -> BL-window + oS = [win convertBaseToScreen: oS]; // BL-window -> BL-screen NSScreen* screen = [win screen]; CGDirectDisplayID display = OSXUtil_getCGDirectDisplayIDByNSScreen(screen); |