]> git.sur5r.net Git - i3/i3/blobdiff - src/xcb.c
Only grab scrollwheel buttons if necessary.
[i3/i3] / src / xcb.c
index cafc29ca239d8a816ad860a3dc5b5f03bc098dca..90d591c746303efa43d3be56cec2c51867b6449d 100644 (file)
--- a/src/xcb.c
+++ b/src/xcb.c
@@ -324,8 +324,19 @@ release_grab:
  * 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++) {
+void xcb_grab_buttons(xcb_connection_t *conn, xcb_window_t window, bool bind_scrollwheel) {
+    uint8_t buttons[3];
+    int num = 0;
+
+    if (bind_scrollwheel) {
+        buttons[num++] = XCB_BUTTON_INDEX_ANY;
+    } else {
+        buttons[num++] = XCB_BUTTON_INDEX_1;
+        buttons[num++] = XCB_BUTTON_INDEX_2;
+        buttons[num++] = XCB_BUTTON_INDEX_3;
+    }
+
+    for (int i = 0; i < num; 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);
     }