Eli Zaretskii writes: >> +void ns_make_frame_key_window (struct frame *f) >> +{ >> + [[FRAME_NS_VIEW (f) window] makeKeyWindow]; >> +} > > Is this new call guaranteed to exist and work well on all the > supported OS versions where we have the NS build? I wouldn't want to > fix this on some systems and break it on others at the same time. makeKeyWindow is a very old API that should be available on every macOS and GNUstep we support, AFAIK. I see usages of that API in other parts of the NS build, in things as central as frame creation, and they are not protected by any version or system check. > > Alternatively, can we come up with a change that does both what the > old code did and this addition? That old code did work at some point, > I presume? This is not the case of the old code breaking at some point. It's a difference in behavior between the GNU/Linux version of Emacs and the NS version of Emacs. In GNU/Linux, if you place an Emacs frame in a separate desktop and press C-x 5 0, the window manager does not automatically switch to the desktop where the other Emacs frames reside. I don't know the reason why the NS build has been calling raise-frame for so long. I presume it was considered a good enough way to refocus to another frame after closing one, in a world where virtual desktops were not very common and the behavior reported by the OP was ignored. I've attached a revised version of the patch, to fix a couple of code style issues.