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
This commit is contained in:
Ingo Bürk 2015-02-11 20:34:43 +01:00
parent bf0e8c2862
commit 594b29f83d
1 changed files with 14 additions and 16 deletions

View File

@ -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,