Make i3 compatible with the very latest xcb
This involves: • Compiling with xcb-util instead of xcb-{atom,aux} (they merged the libraries) • Not using xcb-{event,property} anymore (code removed upstream) • Not using the predefined WINDOW, CARDINEL, … atoms (removed upstream) • Using the new xcb_icccm_* data types/functions instead of just xcb_* (for example xcb_icccm_get_wm_hints instead of xcb_get_wm_hints) Also I refactored the atoms to use x-macros.
This commit is contained in:
@ -374,19 +374,15 @@ void drag_pointer(Con *con, xcb_button_press_event_t *event, xcb_window_t
|
||||
while ((inside_event = xcb_wait_for_event(conn))) {
|
||||
/* We now handle all events we can get using xcb_poll_for_event */
|
||||
do {
|
||||
/* Same as get_event_handler in xcb */
|
||||
int nr = inside_event->response_type;
|
||||
if (nr == 0) {
|
||||
/* An error occured */
|
||||
//handle_event(NULL, conn, inside_event);
|
||||
/* skip x11 errors */
|
||||
if (inside_event->response_type == 0) {
|
||||
free(inside_event);
|
||||
continue;
|
||||
}
|
||||
assert(nr < 256);
|
||||
nr &= XCB_EVENT_RESPONSE_TYPE_MASK;
|
||||
assert(nr >= 2);
|
||||
/* Strip off the highest bit (set if the event is generated) */
|
||||
int type = (inside_event->response_type & 0x7F);
|
||||
|
||||
switch (nr) {
|
||||
switch (type) {
|
||||
case XCB_BUTTON_RELEASE:
|
||||
goto done;
|
||||
|
||||
@ -398,13 +394,13 @@ void drag_pointer(Con *con, xcb_button_press_event_t *event, xcb_window_t
|
||||
|
||||
case XCB_UNMAP_NOTIFY:
|
||||
DLOG("Unmap-notify, aborting\n");
|
||||
xcb_event_handle(&evenths, inside_event);
|
||||
handle_event(type, inside_event);
|
||||
goto done;
|
||||
|
||||
default:
|
||||
DLOG("Passing to original handler\n");
|
||||
/* Use original handler */
|
||||
xcb_event_handle(&evenths, inside_event);
|
||||
handle_event(type, inside_event);
|
||||
break;
|
||||
}
|
||||
if (last_motion_notify != inside_event)
|
||||
|
Reference in New Issue
Block a user