summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Fl_cocoa.mm16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index cf4853b7d..0519797a1 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -577,7 +577,21 @@ static void do_timer(CFRunLoopTimerRef timer, void* data)
contentRect:(NSRect)rect
styleMask:(NSUInteger)windowStyle
{
- self = [super initWithContentRect:rect styleMask:windowStyle backing:NSBackingStoreBuffered defer:NO];
+ NSScreen *gd = nil; // gd will point to the screen containing the bottom-left of rect
+ NSArray *a = [NSScreen screens];
+ for(NSUInteger i = 0; i < [a count]; i++) {
+ NSRect r = [[a objectAtIndex:i] frame];
+ if (rect.origin.x >= r.origin.x && rect.origin.x <= r.origin.x + r.size.width
+ && rect.origin.y >= r.origin.y && rect.origin.y <= r.origin.y + r.size.height) {
+ gd = [a objectAtIndex:i];
+ rect.origin.x -= r.origin.x; // express rect relatively to gd's origin
+ rect.origin.y -= r.origin.y;
+ break;
+ }
+ }
+ // attempt to create the window on screen gd
+ self = [super initWithContentRect:rect styleMask:windowStyle backing:NSBackingStoreBuffered defer:NO
+ screen:gd];
if (self) {
w = flw;
containsGLsubwindow = NO;