From dba01bc014216f72a47c8bc8103922312b31fd88 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 5 Aug 2020 10:58:00 +0530 Subject: [PATCH] Make ringing bell not dependent on having a OSWindow --- kitty/cocoa_window.m | 5 +++++ kitty/glfw.c | 14 ++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/kitty/cocoa_window.m b/kitty/cocoa_window.m index fa404b87a..4b2d7418a 100644 --- a/kitty/cocoa_window.m +++ b/kitty/cocoa_window.m @@ -537,6 +537,11 @@ cocoa_hide_titlebar(void *w) } // autoreleasepool } +void +cocoa_system_beep(void) { + NSBeep(); +} + static PyMethodDef module_methods[] = { {"cocoa_get_lang", (PyCFunction)cocoa_get_lang, METH_NOARGS, ""}, {"cocoa_set_new_window_trigger", (PyCFunction)cocoa_set_new_window_trigger, METH_VARARGS, ""}, diff --git a/kitty/glfw.c b/kitty/glfw.c index 0fd2a20ce..5aca9cb50 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -15,6 +15,7 @@ extern long cocoa_window_number(void *w); extern void cocoa_create_global_menu(void); extern void cocoa_hide_window_title(void *w); extern void cocoa_hide_titlebar(void *w); +extern void cocoa_system_beep(void *w); extern void cocoa_set_activation_policy(bool); extern void cocoa_set_titlebar_color(void *w, color_type color); extern bool cocoa_alt_option_key_pressed(unsigned long); @@ -888,16 +889,14 @@ get_clipboard_string(PYNOARG) { return Py_BuildValue("s", ""); } -void -ring_audio_bell(OSWindow *w UNUSED) { +static void +ring_audio_bell(void) { static monotonic_t last_bell_at = -1; monotonic_t now = monotonic(); if (now - last_bell_at <= ms_to_monotonic_t(100ll)) return; last_bell_at = now; #ifdef __APPLE__ - if (w->handle) { - glfwWindowBell(w->handle); - } + cocoa_system_beep(); #else play_canberra_sound("bell", "kitty bell"); #endif @@ -905,8 +904,7 @@ ring_audio_bell(OSWindow *w UNUSED) { static PyObject* ring_bell(PYNOARG) { - OSWindow *w = current_os_window(); - ring_audio_bell(w); + ring_audio_bell(); Py_RETURN_NONE; } @@ -960,7 +958,7 @@ void request_window_attention(id_type kitty_window_id, bool audio_bell) { OSWindow *w = os_window_for_kitty_window(kitty_window_id); if (w) { - if (audio_bell) ring_audio_bell(w); + if (audio_bell) ring_audio_bell(); if (OPT(window_alert_on_bell)) glfwRequestWindowAttention(w->handle); glfwPostEmptyEvent(); }