From 49eef0db3ff6e4558834088bef26816c9db44dc6 Mon Sep 17 00:00:00 2001 From: Axel Wagner Date: Fri, 30 Jul 2010 04:19:32 +0200 Subject: [PATCH] Making Mouse-clicks work --- i3bar/src/main.c | 2 +- i3bar/src/xcb.c | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/i3bar/src/main.c b/i3bar/src/main.c index 6cc70634..d0ce4162 100644 --- a/i3bar/src/main.c +++ b/i3bar/src/main.c @@ -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) { diff --git a/i3bar/src/xcb.c b/i3bar/src/xcb.c index 099275d6..98ec186c 100644 --- a/i3bar/src/xcb.c +++ b/i3bar/src/xcb.c @@ -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");