From 8622c4734838de611c35444a9380a5a34ef6d266 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 8 Jan 2022 10:00:25 +0530 Subject: [PATCH] Fix #4430 --- kitty/mouse.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/kitty/mouse.c b/kitty/mouse.c index 00acaa8c0..dde1a306e 100644 --- a/kitty/mouse.c +++ b/kitty/mouse.c @@ -497,14 +497,20 @@ HANDLER(handle_button_event) { } Screen *screen = w->render_data.screen; if (!screen) return; + id_type wid = w->id; if (!dispatch_mouse_event(w, button, is_release ? -1 : 1, modifiers, screen->modes.mouse_tracking_mode != 0)) { if (screen->modes.mouse_tracking_mode != 0) { int sz = encode_mouse_button(w, button, is_release ? RELEASE : PRESS, modifiers); if (sz > 0) { mouse_event_buf[sz] = 0; write_escape_code_to_child(screen, CSI, mouse_event_buf); } } } - if (is_release) dispatch_possible_click(w, button, modifiers); - else add_press(w, button, modifiers); + // the windows array might have been re-alloced in dispatch_mouse_event + w = NULL; + for (size_t i = 0; i < t->num_windows && !w; i++) if (t->windows[i].id == wid) w = t->windows + i; + if (w) { + if (is_release) dispatch_possible_click(w, button, modifiers); + else add_press(w, button, modifiers); + } } static int