diff options
| author | Po Lu | 2022-01-15 21:11:57 +0800 |
|---|---|---|
| committer | Po Lu | 2022-01-21 09:00:59 +0800 |
| commit | 7ff7f948f7802941b98294ae8a52a9a178dcaa9d (patch) | |
| tree | 792483c21ad6bf20f3aab29eef866b6a5282d636 /src | |
| parent | 10083e788f7349fa363d100687dc3d94bea88f57 (diff) | |
| download | emacs-7ff7f948f7802941b98294ae8a52a9a178dcaa9d.tar.gz emacs-7ff7f948f7802941b98294ae8a52a9a178dcaa9d.zip | |
Avoid FOCUS_IN_EVENTS not being sent on NS
* src/nsterm.m ([EmacsView windowDidBecomeKey]): Work around
emacs_event being NULL by storing focus in events directly
into the keyboard buffer. (bug#52376)
Diffstat (limited to 'src')
| -rw-r--r-- | src/nsterm.m | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/nsterm.m b/src/nsterm.m index 4f60cc737da..a3c7b55218c 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -7071,6 +7071,9 @@ not_in_argv (NSString *arg) | |||
| 7071 | { | 7071 | { |
| 7072 | struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (emacsframe); | 7072 | struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (emacsframe); |
| 7073 | struct frame *old_focus = dpyinfo->ns_focus_frame; | 7073 | struct frame *old_focus = dpyinfo->ns_focus_frame; |
| 7074 | struct input_event event; | ||
| 7075 | |||
| 7076 | EVENT_INIT (event); | ||
| 7074 | 7077 | ||
| 7075 | NSTRACE ("[EmacsView windowDidBecomeKey]"); | 7078 | NSTRACE ("[EmacsView windowDidBecomeKey]"); |
| 7076 | 7079 | ||
| @@ -7079,11 +7082,9 @@ not_in_argv (NSString *arg) | |||
| 7079 | 7082 | ||
| 7080 | ns_frame_rehighlight (emacsframe); | 7083 | ns_frame_rehighlight (emacsframe); |
| 7081 | 7084 | ||
| 7082 | if (emacs_event) | 7085 | event.kind = FOCUS_IN_EVENT; |
| 7083 | { | 7086 | XSETFRAME (event.frame_or_window, emacsframe); |
| 7084 | emacs_event->kind = FOCUS_IN_EVENT; | 7087 | kbd_buffer_store_event (&event); |
| 7085 | EV_TRAILER ((id)nil); | ||
| 7086 | } | ||
| 7087 | } | 7088 | } |
| 7088 | 7089 | ||
| 7089 | 7090 | ||