]> git.sur5r.net Git - i3/i3/commitdiff
Make click events on status blocks work if 'workspace_buttons no' is set. 1465/head
authorIngo Bürk <ingo.buerk@tngtech.com>
Wed, 11 Feb 2015 19:34:43 +0000 (20:34 +0100)
committerIngo Bürk <ingo.buerk@tngtech.com>
Wed, 11 Feb 2015 19:34:43 +0000 (20:34 +0100)
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

i3bar/src/xcb.c

index 2d33919e785ab28318e97142d0362a2940084b7f..b417110ae240eebe1d028f0877de2e272b71e783 100644 (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,