From: Alan Third Date: Wed, 25 Aug 2021 20:00:07 +0000 (+0100) Subject: Disable the NS app when no frames are left (bug#14619, bug#21357, bug#23586) X-Git-Tag: emacs-28.0.90~1278 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b0fe06e656209581466f60ac3b9ea98bb6acecbf;p=emacs.git Disable the NS app when no frames are left (bug#14619, bug#21357, bug#23586) * src/nsfns.m (Fx_create_frame): Enable the app. * src/nsterm.m (ns_delete_terminal): Disable the app. --- diff --git a/src/nsfns.m b/src/nsfns.m index c40367703db..07bcab1816b 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -1343,6 +1343,11 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame, f->output_data.ns->in_animation = NO; +#ifdef NS_IMPL_COCOA + /* If the app has previously been disabled, start it up again. */ + [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; +#endif + [[EmacsView alloc] initFrameFromEmacs: f]; ns_icon (f, parms); diff --git a/src/nsterm.m b/src/nsterm.m index 1c1f0c8f239..4bdc67c10b5 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -5014,6 +5014,12 @@ ns_delete_terminal (struct terminal *terminal) block_input (); +#ifdef NS_IMPL_COCOA + /* Rather than try to clean up the NS environment we can just + disable the app and leave it waiting for any new frames. */ + [NSApp setActivationPolicy:NSApplicationActivationPolicyProhibited]; +#endif + image_destroy_all_bitmaps (dpyinfo); ns_delete_display (dpyinfo); unblock_input ();