Subject: bug#53276: The blink-cursor-mode not work after startup on macOS

From: Po Lu <[email-masked]>
Date: Sat, 15 Jan 2022 21:11:30 +0800

Po Lu <[email-masked]> writes:

> I think the right solution is to store events directly into the keyboard
> buffer instead of using emacs_event, but I don't know if there's a
> reason the NS port was not developed that way.

If you don't know the answer, I think we should install the following
version of `windowDidBecomeKey' in master and see if anyone complains:

    - (void)windowDidBecomeKey      /* for direct calls */
    {
      struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (emacsframe);
      struct frame *old_focus = dpyinfo->ns_focus_frame;
      struct input_event event;

      EVENT_INIT (event);

      NSTRACE ("[EmacsView windowDidBecomeKey]");

      if (emacsframe != old_focus)
        dpyinfo->ns_focus_frame = emacsframe;

      ns_frame_rehighlight (emacsframe);

      event.kind = FOCUS_IN_EVENT;
      XSETFRAME (event.frame_or_window, emacsframe);
      kbd_buffer_store_event (&event);
    }

And if nobody complains in a year, convert the rest of the places where
emacs_event is used to do this as well.

WDYT?