From 0f67f586b1a95c0f006f50738bf8b418968076c8 Mon Sep 17 00:00:00 2001 From: "Enno Boland (tox)" Date: Tue, 8 Sep 2009 11:53:32 +0200 Subject: added tab selecting with mouse --- tabbed.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tabbed.c') diff --git a/tabbed.c b/tabbed.c index d809fe0..2b94ce4 100644 --- a/tabbed.c +++ b/tabbed.c @@ -76,12 +76,14 @@ typedef struct Listener { /* function declarations */ static void autostart(void); +static void buttonpress(XEvent *e); static void cleanup(void); static void configurenotify(XEvent *e); static void die(const char *errstr, ...); static void drawbar(); static void drawtext(const char *text, unsigned long col[ColLast]); static void expose(XEvent *e); +static void focus(Client *c); static unsigned long getcolor(const char *colstr); static Client *getclient(Window w); static Client *getfirsttab(); @@ -109,6 +111,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { [ConfigureNotify] = configurenotify, [PropertyNotify] = propertynotify, [UnmapNotify] = unmapnotify, + [ButtonPress] = buttonpress, [KeyPress] = keypress, [Expose] = expose, }; @@ -132,6 +135,20 @@ autostart() { autostarts[i].func(&(autostarts[i].arg)); } +void +buttonpress(XEvent *e) { + int i; + Client *c; + XButtonPressedEvent *ev = &e->xbutton; + + for(i = 0, c = getfirsttab(); c; c = c->next, i++) { + if(i * tabwidth < ev->x && (i + 1) * tabwidth > ev->x) { + focus(c); + break; + } + } +} + void cleanup(void) { if(dc.font.set) -- cgit v1.2.3