diff --git a/kitty/keys.c b/kitty/keys.c index 30d01cbf9..11be2dcb6 100644 --- a/kitty/keys.c +++ b/kitty/keys.c @@ -88,16 +88,6 @@ update_ime_position(OSWindow *os_window, Window* w, Screen *screen) { glfwUpdateIMEState(global_state.callback_os_window->handle, 2, left, top, cell_width, cell_height); } -static inline Window* -window_for_id(id_type window_id) { - Tab *t = global_state.callback_os_window->tabs + global_state.callback_os_window->active_tab; - for (unsigned int i = 0; i < t->num_windows; i++) { - Window *w = t->windows + i; - if (w->id == window_id) return w; - } - return NULL; -} - void on_key_input(GLFWkeyevent *ev) { Window *w = active_window(); @@ -161,7 +151,7 @@ on_key_input(GLFWkeyevent *ev) { bool consumed = false; // the shortcut could have created a new window or closed the // window, rendering the pointer no longer valid - w = window_for_id(active_window_id); + w = window_for_window_id(active_window_id); if (ret == NULL) { PyErr_Print(); } else { consumed = ret == Py_True; diff --git a/kitty/state.c b/kitty/state.c index 9b56c9822..d174e0962 100644 --- a/kitty/state.c +++ b/kitty/state.c @@ -84,6 +84,20 @@ os_window_for_kitty_window(id_type kitty_window_id) { return NULL; } +Window* +window_for_window_id(id_type kitty_window_id) { + for (size_t i = 0; i < global_state.num_os_windows; i++) { + OSWindow *w = global_state.os_windows + i; + for (size_t t = 0; t < w->num_tabs; t++) { + Tab *tab = w->tabs + t; + for (size_t c = 0; c < tab->num_windows; c++) { + if (tab->windows[c].id == kitty_window_id) return tab->windows + c; + } + } + } + return NULL; +} + static void send_bgimage_to_gpu(BackgroundImageLayout layout, BackgroundImage *bgimage) { RepeatStrategy r; diff --git a/kitty/state.h b/kitty/state.h index 534d83135..bd9011139 100644 --- a/kitty/state.h +++ b/kitty/state.h @@ -283,3 +283,4 @@ void os_window_update_size_increments(OSWindow *window); void set_os_window_title_from_window(Window *w, OSWindow *os_window); void update_os_window_title(OSWindow *os_window); void fake_scroll(Window *w, int amount, bool upwards); +Window* window_for_window_id(id_type kitty_window_id);