From: Ingo Bürk Date: Wed, 11 Feb 2015 19:34:43 +0000 (+0100) Subject: Make click events on status blocks work if 'workspace_buttons no' is set. X-Git-Tag: 4.9~6^2^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=refs%2Fpull%2F1465%2Fhead;p=i3%2Fi3 Make click events on status blocks work if 'workspace_buttons no' is set. 1. Always subscribe to click events for i3bar. 2. Exit the click event handler if no current workspace was found only after clicks on status blocks have been handled. fixes #1430 --- diff --git a/i3bar/src/xcb.c b/i3bar/src/xcb.c index 2d33919e..b417110a 100644 --- a/i3bar/src/xcb.c +++ b/i3bar/src/xcb.c @@ -314,18 +314,6 @@ void handle_button(xcb_button_press_event_t *event) { return; } - /* TODO: Move this to extern get_ws_for_output() */ - TAILQ_FOREACH (cur_ws, walk->workspaces, tailq) { - if (cur_ws->visible) { - break; - } - } - - if (cur_ws == NULL) { - DLOG("No Workspace active?\n"); - return; - } - int32_t x = event->event_x >= 0 ? event->event_x : 0; int32_t original_x = x; @@ -364,6 +352,18 @@ void handle_button(xcb_button_press_event_t *event) { x = original_x; } + /* TODO: Move this to extern get_ws_for_output() */ + TAILQ_FOREACH (cur_ws, walk->workspaces, tailq) { + if (cur_ws->visible) { + break; + } + } + + if (cur_ws == NULL) { + DLOG("No Workspace active?\n"); + return; + } + switch (event->detail) { case 4: /* Mouse wheel up. We select the previous ws, if any. @@ -1460,10 +1460,8 @@ void reconfig_windows(bool redraw_bars) { * BUTTON_PRESS, to handle clicks on the workspace buttons * */ values[2] = XCB_EVENT_MASK_EXPOSURE | - XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT; - if (!config.disable_ws) { - values[2] |= XCB_EVENT_MASK_BUTTON_PRESS; - } + XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | + XCB_EVENT_MASK_BUTTON_PRESS; xcb_void_cookie_t win_cookie = xcb_create_window_checked(xcb_connection, root_screen->root_depth, walk->bar,