case XCB_FOCUS_IN:
focus_in(evt);
break;
+ case 0:
+ process_error(evt);
+ break;
default:
if (randr && resp_type == randr_base + XCB_RANDR_SCREEN_CHANGE_NOTIFY)
update_monitors();
xcb_point_t pt = {e->root_x, e->root_y};
query_pointer(&win, NULL);
- bool backup = pointer_follows_monitor;
+ bool pfm_backup = pointer_follows_monitor;
+ bool pff_backup = pointer_follows_focus;
auto_raise = false;
pointer_follows_monitor = false;
+ pointer_follows_focus = false;
if (!window_focus(win)) {
monitor_t *m = monitor_from_point(pt);
if (m != NULL && m != mon)
focus_node(m, m->desk, m->desk->focus);
}
- pointer_follows_monitor = backup;
+ pointer_follows_monitor = pfm_backup;
+ pointer_follows_focus = pff_backup;
auto_raise = true;
}
set_urgency(m, d, n, !n->client->urgent);
}
}
+
+void process_error(xcb_generic_event_t *evt)
+{
+ xcb_request_error_t *e = (xcb_request_error_t *) evt;
+ warn("Failed request: %s, %s: %d.\n", xcb_event_get_request_label(e->major_opcode), xcb_event_get_error_label(e->error_code), e->bad_value);
+}