From 5bc2098c6f9f1e95462e43adcd2922d7730c0b60 Mon Sep 17 00:00:00 2001 From: okan Date: Sun, 10 Mar 2019 20:38:28 +0000 Subject: [PATCH] Find the managed screen from the parent window for client_current(). --- xevents.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/xevents.c b/xevents.c index c35e87a..15f7e10 100644 --- a/xevents.c +++ b/xevents.c @@ -75,11 +75,15 @@ static void xev_handle_maprequest(XEvent *ee) { XMapRequestEvent *e = &ee->xmaprequest; - struct client_ctx *cc = NULL, *old_cc; + struct screen_ctx *sc; + struct client_ctx *cc, *old_cc; - LOG_DEBUG3("window: 0x%lx", e->window); + LOG_DEBUG3("parent: 0x%lx window: 0x%lx", e->parent, e->window); - if ((old_cc = client_current(NULL)) != NULL) + if ((sc = screen_find(e->parent)) == NULL) + return; + + if ((old_cc = client_current(sc)) != NULL) client_ptrsave(old_cc); if ((cc = client_find(e->window)) == NULL) @@ -355,7 +359,7 @@ xev_handle_keyrelease(XEvent *ee) keysym = XkbKeycodeToKeysym(X_Dpy, e->keycode, 0, 0); for (i = 0; i < nitems(modkeys); i++) { if (keysym == modkeys[i]) { - if ((cc = client_current(NULL)) != NULL) { + if ((cc = client_current(sc)) != NULL) { if (sc->cycling) { sc->cycling = 0; client_mtf(cc);