From: Michael Stapelberg Date: Sun, 14 Oct 2012 19:05:44 +0000 (+0200) Subject: bugfix: don’t send workspace command when at beginning/end of workspaces (Thanks... X-Git-Tag: 4.4~51 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=b9885ff21e499f1fc963267d24632ce00d9ffeb5;p=i3%2Fi3 bugfix: don’t send workspace command when at beginning/end of workspaces (Thanks whitequark) fixes #843 --- diff --git a/i3bar/src/xcb.c b/i3bar/src/xcb.c index 405eefdb..2c0d2a6a 100644 --- a/i3bar/src/xcb.c +++ b/i3bar/src/xcb.c @@ -302,16 +302,24 @@ void handle_button(xcb_button_press_event_t *event) { } break; case 4: - /* Mouse wheel down. We select the next ws */ - if (cur_ws != TAILQ_FIRST(walk->workspaces)) { - cur_ws = TAILQ_PREV(cur_ws, ws_head, tailq); - } + /* 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 + * up on the wrong workspace. */ + if (cur_ws == TAILQ_FIRST(walk->workspaces)) + return; + + cur_ws = TAILQ_PREV(cur_ws, ws_head, tailq); break; case 5: - /* Mouse wheel up. We select the previos ws */ - if (cur_ws != TAILQ_LAST(walk->workspaces, ws_head)) { - cur_ws = TAILQ_NEXT(cur_ws, tailq); - } + /* 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 + * up on the wrong workspace. */ + if (cur_ws == TAILQ_LAST(walk->workspaces, ws_head)) + return; + + cur_ws = TAILQ_NEXT(cur_ws, tailq); break; }