]> git.sur5r.net Git - i3/i3/commitdiff
Making Mouse-clicks work
authorAxel Wagner <mail@merovius.de>
Fri, 30 Jul 2010 02:19:32 +0000 (04:19 +0200)
committerAxel Wagner <mail@merovius.de>
Fri, 30 Jul 2010 02:19:32 +0000 (04:19 +0200)
i3bar/src/main.c
i3bar/src/xcb.c

index 6cc70634636a7ef06fd475a24a250e293e1b652a..d0ce4162da37898c394113fc01c78c7a967f3583 100644 (file)
@@ -20,8 +20,8 @@ void ev_check_cb(struct ev_loop *loop, ev_check *w, int revents) {
        xcb_generic_event_t *event;
        if ((event = xcb_poll_for_event(xcb_connection)) != NULL) {
                handle_xcb_event(event);
-               free(event);
        }
+       free(event);
 }
 
 void xcb_io_cb(struct ev_loop *loop, ev_io *w, int revents) {
index 099275d61fe9a3c47a7e758f86d61b718f1fa9c3..98ec186c4d6b99c11922e5adf4f5fff7234d4cbb 100644 (file)
@@ -47,7 +47,23 @@ void handle_button(xcb_button_press_event_t *event) {
                return;
        }
 
+       int32_t x = event->event_x;
+
+       printf("Got Button %d\n", event->detail);
+
        switch (event->detail) {
+               case 1:
+                       TAILQ_FOREACH(cur_ws, walk->workspaces, tailq) {
+                               printf("x = %d\n", x);
+                               if (x < cur_ws->name_width + 10) {
+                                       break;
+                               }
+                               x -= cur_ws->name_width + 10;
+                       }
+                       if (cur_ws == NULL) {
+                               return;
+                       }
+                       break;
                case 4:
                        if (cur_ws == TAILQ_LAST(walk->workspaces, ws_head)) {
                                cur_ws = TAILQ_FIRST(walk->workspaces);
@@ -241,7 +257,7 @@ void draw_buttons() {
                                        &rect);
                i3_ws *ws_walk;
                TAILQ_FOREACH(ws_walk, outputs_walk->workspaces, tailq) {
-                       printf("Drawing Button for WS %s...\n", ws_walk->name);
+                       printf("Drawing Button for WS %s at x = %d\n", ws_walk->name, i);
                        uint32_t color = get_colorpixel("240000");
                        if (ws_walk->visible) {
                                color = get_colorpixel("480000");