From 432c4211ea422608645ecb8ef02ac88687adeced Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ingo=20B=C3=BCrk?= Date: Sun, 12 Feb 2017 20:48:44 +0100 Subject: [PATCH] Allow using left/right scrolling like up/down scrolling. This commit makes left/right scrolling synonyms for up/down scrolling for * scrolling on window decoration * scrolling on i3bar workspaces fixes #2677 --- i3bar/src/xcb.c | 2 ++ include/libi3.h | 1 - src/click.c | 10 +++++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/i3bar/src/xcb.c b/i3bar/src/xcb.c index 0b9d6f81..24f91642 100644 --- a/i3bar/src/xcb.c +++ b/i3bar/src/xcb.c @@ -532,6 +532,7 @@ void handle_button(xcb_button_press_event_t *event) { } switch (event->detail) { case XCB_BUTTON_SCROLL_UP: + case XCB_BUTTON_SCROLL_LEFT: /* Mouse wheel up. We select the previous ws, if any. * If there is no more workspace, don’t even send the workspace * command, otherwise (with workspace auto_back_and_forth) we’d end @@ -542,6 +543,7 @@ void handle_button(xcb_button_press_event_t *event) { cur_ws = TAILQ_PREV(cur_ws, ws_head, tailq); break; case XCB_BUTTON_SCROLL_DOWN: + case XCB_BUTTON_SCROLL_RIGHT: /* Mouse wheel down. We select the next ws, if any. * If there is no more workspace, don’t even send the workspace * command, otherwise (with workspace auto_back_and_forth) we’d end diff --git a/include/libi3.h b/include/libi3.h index 67094534..dbb29e1f 100644 --- a/include/libi3.h +++ b/include/libi3.h @@ -34,7 +34,6 @@ #define XCB_BUTTON_SCROLL_LEFT 6 #define XCB_BUTTON_SCROLL_RIGHT 7 - /** * XCB connection and root screen * diff --git a/src/click.c b/src/click.c index 5717b9b0..e989b88d 100644 --- a/src/click.c +++ b/src/click.c @@ -229,7 +229,9 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod if (in_stacked && dest == CLICK_DECORATION && (event->detail == XCB_BUTTON_SCROLL_UP || - event->detail == XCB_BUTTON_SCROLL_DOWN)) { + event->detail == XCB_BUTTON_SCROLL_DOWN || + event->detail == XCB_BUTTON_SCROLL_LEFT || + event->detail == XCB_BUTTON_SCROLL_RIGHT)) { DLOG("Scrolling on a window decoration\n"); orientation_t orientation = (con->parent->layout == L_STACKED ? VERT : HORIZ); /* Focus the currently focused container on the same level that the @@ -244,10 +246,12 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod * #557), we first check if scrolling is possible at all. */ bool scroll_prev_possible = (TAILQ_PREV(focused, nodes_head, nodes) != NULL); bool scroll_next_possible = (TAILQ_NEXT(focused, nodes) != NULL); - if (event->detail == XCB_BUTTON_SCROLL_UP && scroll_prev_possible) + if ((event->detail == XCB_BUTTON_SCROLL_UP || event->detail == XCB_BUTTON_SCROLL_LEFT) && scroll_prev_possible) { tree_next('p', orientation); - else if (event->detail == XCB_BUTTON_SCROLL_DOWN && scroll_next_possible) + } else if ((event->detail == XCB_BUTTON_SCROLL_DOWN || event->detail == XCB_BUTTON_SCROLL_RIGHT) && scroll_next_possible) { tree_next('n', orientation); + } + goto done; } -- 2.39.2