*
*/
void xcb_remove_property_atom(xcb_connection_t *conn, xcb_window_t window, xcb_atom_t property, xcb_atom_t atom);
+
+/**
+ * Grab the specified buttons on a window when managing it.
+ *
+ */
+void xcb_grab_buttons(xcb_connection_t *conn, xcb_window_t window, uint8_t* buttons);
cwindow->id = window;
cwindow->depth = get_visual_depth(attr->visual);
- /* We need to grab buttons 1-3 for click-to-focus and buttons 1-5
- * to allow for mouse bindings using --whole-window to work correctly. */
- xcb_grab_button(conn, false, window, XCB_EVENT_MASK_BUTTON_PRESS,
- XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC, root, XCB_NONE,
- XCB_BUTTON_INDEX_ANY,
- XCB_BUTTON_MASK_ANY /* don’t filter for any modifiers */);
+ xcb_grab_buttons(conn, window, (uint8_t[]) {XCB_BUTTON_INDEX_ANY});
/* update as much information as possible so far (some replies may be NULL) */
window_update_class(cwindow, xcb_get_property_reply(conn, class_cookie, NULL), true);
FREE(reply);
xcb_ungrab_server(conn);
}
+
+/*
+ * Grab the specified buttons on a window when managing it.
+ *
+ */
+void xcb_grab_buttons(xcb_connection_t *conn, xcb_window_t window, uint8_t* buttons) {
+ for (int i = 0; i < sizeof(buttons) / sizeof(uint8_t); i++) {
+ xcb_grab_button(conn, false, window, XCB_EVENT_MASK_BUTTON_PRESS, XCB_GRAB_MODE_SYNC,
+ XCB_GRAB_MODE_ASYNC, root, XCB_NONE, buttons[i], XCB_BUTTON_MASK_ANY);
+ }
+}