From 9fd6e41a4ef1a792337bac0ff4eb518f8aeb4d48 Mon Sep 17 00:00:00 2001 From: Bert Gijsbers Date: Sat, 15 Jun 2024 19:40:18 +0200 Subject: [PATCH] Don't dispatch events to destroyed windows. --- src/yxapp.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/yxapp.cc b/src/yxapp.cc index 1e6fd5fb5..bf964f659 100644 --- a/src/yxapp.cc +++ b/src/yxapp.cc @@ -628,11 +628,13 @@ void YXApplication::dispatchEvent(YWindow *win, XEvent &xev) { w = w->getFocusWindow(); } - for (; w && (w->handleKey(xev.xkey) == false); w = w->parent()) { + for (; w; w = w->parent()) { + if (w->destroyed() || w->handleKey(xev.xkey)) + break; if (fGrabTree && w == fXGrabWindow) break; } - } else { + } else if (win->destroyed() == false) { Window child; if (xev.type == MotionNotify) { @@ -698,7 +700,7 @@ void YXApplication::handleGrabEvent(YWindow *winx, XEvent &xev) { } if (win.ptr == nullptr) return ; - { + else { YWindow *p = win.ptr; for (; p; p = p->parent()) { if (p == fXGrabWindow)