From 136f15e64765bbe134d68fc887fdd1be074ece72 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 17 Mar 2019 12:27:41 +0530 Subject: [PATCH] Fix move to GLFW event loop breaking using macOS native quit action with no windows open. Fixes #1476 --- kitty/glfw.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kitty/glfw.c b/kitty/glfw.c index 8c8ef51a8..142075e86 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -123,6 +123,14 @@ window_close_callback(GLFWwindow* window) { global_state.callback_os_window = NULL; } +#ifdef __APPLE__ +static void +application_quit_canary_close_requested(GLFWwindow *window UNUSED) { + global_state.has_pending_closes = true; + request_tick_callback(); +} +#endif + static void window_occlusion_callback(GLFWwindow *window, bool occluded UNUSED) { if (!set_callback_window(window)) return; @@ -539,6 +547,7 @@ create_os_window(PyObject UNUSED *self, PyObject *args) { #ifdef __APPLE__ if (is_first_window && !application_quit_canary) { application_quit_canary = glfwCreateWindow(100, 200, "quit_canary", NULL, NULL); + glfwSetWindowCloseCallback(application_quit_canary, application_quit_canary_close_requested); } if (!common_context) common_context = application_quit_canary; #endif