From: Michael Stapelberg Date: Sat, 11 Apr 2009 09:54:30 +0000 (+0200) Subject: Bugfix: Don’t change to workspaces on different screens when scrolling through them... X-Git-Tag: 3.a-bf1~47 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=e3516d72f59ffaf9c71ab117168b44cd9b7f6422;p=i3%2Fi3 Bugfix: Don’t change to workspaces on different screens when scrolling through them (Thanks Mirko) This fixes ticket #19 --- diff --git a/src/handlers.c b/src/handlers.c index 47766623..caf08bf0 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -252,11 +252,12 @@ static bool button_press_bar(xcb_connection_t *conn, xcb_button_press_event_t *e /* Check if the button was one of button4 or button5 (scroll up / scroll down) */ if (event->detail == XCB_BUTTON_INDEX_4 || event->detail == XCB_BUTTON_INDEX_5) { - int dest_workspace = (event->detail == XCB_BUTTON_INDEX_4 ? - c_ws->num - 1 : - c_ws->num + 1); - if ((dest_workspace >= 0) && (dest_workspace < 10)) - show_workspace(conn, dest_workspace+1); + int add = (event->detail == XCB_BUTTON_INDEX_4 ? -1 : 1); + for (int i = c_ws->num + add; (i >= 0) && (i < 10); i += add) + if (workspaces[i].screen == screen) { + show_workspace(conn, i+1); + return true; + } return true; } i3Font *font = load_font(conn, config.font);