Restore correct support of fl_open_callback() under macOS 26 - cont'd

This commit is contained in:
ManoloFLTK 2026-02-25 19:53:07 +01:00
parent 0b88a6c63b
commit 33f29ae481

View File

@ -1716,12 +1716,19 @@ static void drain_dropped_files_list() {
free(fname);
}
static BOOL need_new_nsapp = NO;
/*
* Install an open documents event handler...
*/
void Fl_Darwin_System_Driver::open_callback(void (*cb)(const char *)) {
fl_open_display();
((FLAppDelegate*)[NSApp delegate])->open_cb = cb;
if (!NSApp) {
need_new_nsapp = YES;
[NSApplication sharedApplication];
}
FLAppDelegate *delegate = [FLAppDelegate alloc];
[NSApp setDelegate:[delegate init]];
delegate->open_cb = cb;
}
@implementation FLApplication
@ -1802,15 +1809,20 @@ void Fl_Cocoa_Screen_Driver::open_display_platform() {
if ( !beenHereDoneThat ) {
beenHereDoneThat = 1;
BOOL need_new_nsapp = (NSApp == nil);
if (need_new_nsapp) [NSApplication sharedApplication];
if (!NSApp) {
need_new_nsapp = YES;
[NSApplication sharedApplication];
}
NSAutoreleasePool *localPool;
localPool = [[NSAutoreleasePool alloc] init]; // never released
FLAppDelegate *delegate = [FLAppDelegate alloc];
[(NSApplication*)NSApp setDelegate:[delegate init]];
FLAppDelegate *delegate = [NSApp delegate];
if (!delegate) {
delegate = [FLAppDelegate alloc];
[(NSApplication*)NSApp setDelegate:[delegate init]];
}
if (need_new_nsapp) {
if (fl_mac_os_version >= 101300 && (fl_mac_os_version < 140000 ||
(![NSApp isRunning] && ((FLAppDelegate*)[NSApp delegate])->open_cb)) &&
if (fl_mac_os_version >= 101300 &&
(fl_mac_os_version < 140000 || (![NSApp isRunning] && delegate->open_cb)) &&
is_bundled()) {
[NSApp activateIgnoringOtherApps:YES];
in_nsapp_run = true;