Workaround for new windows not getting focus events on macOS

This commit is contained in:
Kovid Goyal
2017-11-20 15:09:30 +05:30
parent ba40bf5e6f
commit 058c1bec10
4 changed files with 13 additions and 11 deletions

View File

@@ -39,22 +39,22 @@ GlobalState global_state = {{0}};
#define WITH_OS_WINDOW_REFS \
id_type cb_window_id = 0, focused_window_id = 0; \
if (global_state.callback_os_window) cb_window_id = global_state.callback_os_window->id; \
if (global_state.focused_os_window) focused_window_id = global_state.focused_os_window->id;
#define END_WITH_OS_WINDOW_REFS \
if (cb_window_id || focused_window_id) { \
global_state.callback_os_window = NULL; global_state.focused_os_window = NULL; \
global_state.callback_os_window = NULL; \
for (size_t wn = 0; wn < global_state.num_os_windows; wn++) { \
OSWindow *wp = global_state.os_windows + wn; \
if (wp->id == cb_window_id && cb_window_id) global_state.callback_os_window = wp; \
if (wp->id == focused_window_id && focused_window_id) global_state.focused_os_window = wp; \
}}
OSWindow*
current_os_window() {
if (global_state.callback_os_window) return global_state.callback_os_window;
if (global_state.focused_os_window) return global_state.focused_os_window;
for (size_t i = 0; i < global_state.num_os_windows; i++) {
if (global_state.os_windows[i].is_focused) return global_state.os_windows + i;
}
return global_state.os_windows;
}