diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 42476a526..a4f27db88 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -649,6 +649,7 @@ void Fl::remove_timeout(Fl_Timeout_Handler cb, void* data) - (void)recursivelySendToSubwindows:(SEL)sel; - (void)setSubwindowFrame; - (void)checkSubwindowFrame; +- (void)waitForExpose; - (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen; #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - (NSPoint)convertBaseToScreen:(NSPoint)aPoint; @@ -769,6 +770,16 @@ void Fl::remove_timeout(Fl_Timeout_Handler cb, void* data) } } +-(void)waitForExpose +{ + if ([self getFl_Window]->shown()) { + // this makes freshly created windows appear on the screen, if they are not there already + NSModalSession session = [NSApp beginModalSessionForWindow:self]; + [NSApp runModalSession:session]; + [NSApp endModalSession:session]; + } +} + /* With Mac OS 10.11 the green window button makes window fullscreen (covers system menu bar and dock). When there are subwindows, they are by default constrained not to cover the menu bar (this is arguably a Mac OS bug). @@ -3130,12 +3141,7 @@ void Fl_Window::size_range_() { void Fl_Window::wait_for_expose() { - if (shown()) { - // this makes freshly created windows appear on the screen, if they are not there already - NSModalSession session = [NSApp beginModalSessionForWindow:i->xid]; - [NSApp runModalSession:session]; - [NSApp endModalSession:session]; - } + [fl_xid(this) recursivelySendToSubwindows:@selector(waitForExpose)]; } /*