From: Tony Crisci Date: Thu, 12 Jun 2014 05:33:33 +0000 (-0400) Subject: Bugfix: Set input focus with last timestamp X-Git-Tag: 4.8~15 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9cee8dac5e9057bf2cb72edc3cf398fdc08b8d73;hp=0552fd5666823fc52c8a86a863816ac2ba54e379;p=i3%2Fi3 Bugfix: Set input focus with last timestamp Setting input focus with the last event timestamp prevents race conditions when setting focus. fixes #1127 --- diff --git a/src/x.c b/src/x.c index 086dbc9b..e48161db 100644 --- a/src/x.c +++ b/src/x.c @@ -1026,7 +1026,7 @@ void x_push_changes(Con *con) { values[0] = CHILD_EVENT_MASK & ~(XCB_EVENT_MASK_FOCUS_CHANGE); xcb_change_window_attributes(conn, focused->window->id, XCB_CW_EVENT_MASK, values); } - xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, to_focus, XCB_CURRENT_TIME); + xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, to_focus, last_timestamp); if (focused->window != NULL) { values[0] = CHILD_EVENT_MASK; xcb_change_window_attributes(conn, focused->window->id, XCB_CW_EVENT_MASK, values); @@ -1044,7 +1044,7 @@ void x_push_changes(Con *con) { if (focused_id == XCB_NONE) { DLOG("Still no window focused, better set focus to the root window\n"); - xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, root, XCB_CURRENT_TIME); + xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, root, last_timestamp); ewmh_update_active_window(XCB_WINDOW_NONE); focused_id = root; }