From: Michael Stapelberg Date: Wed, 25 Feb 2009 18:11:49 +0000 (+0100) Subject: Grab XCB_GRAB_SYNC and replay the event so it doesn’t get lost X-Git-Tag: 3.a~148 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=1335e4a4c9c7af2f4ade5169d8385b1bd4c1b0e2;p=i3%2Fi3 Grab XCB_GRAB_SYNC and replay the event so it doesn’t get lost --- diff --git a/src/handlers.c b/src/handlers.c index a147e2f4..d058b650 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -147,6 +147,8 @@ int handle_button_press(void *ignored, xcb_connection_t *conn, xcb_button_press_ if (con == NULL) { printf("dock. done.\n"); + xcb_allow_events(conn, XCB_ALLOW_REPLAY_POINTER, event->time); + xcb_flush(conn); return 1; } @@ -154,6 +156,8 @@ int handle_button_press(void *ignored, xcb_connection_t *conn, xcb_button_press_ if (!border_click) { printf("client. done.\n"); + xcb_allow_events(conn, XCB_ALLOW_REPLAY_POINTER, event->time); + xcb_flush(conn); return 1; } diff --git a/src/mainx.c b/src/mainx.c index c3a7bbcd..ef431220 100644 --- a/src/mainx.c +++ b/src/mainx.c @@ -200,7 +200,7 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child, /* We need to grab the mouse buttons for click to focus */ xcb_grab_button(conn, false, child, XCB_EVENT_MASK_BUTTON_PRESS, - XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, root, XCB_NONE, + XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC, root, XCB_NONE, 1 /* left mouse button */, XCB_BUTTON_MASK_ANY /* don’t filter for any modifiers */);