commit 0f67f586b1a95c0f006f50738bf8b418968076c8
parent 21ae332817f235ba45e28fe6389abf39308ed93b
Author: Enno Boland (tox) <tox@s01.de>
Date:   Tue,  8 Sep 2009 11:53:32 +0200
added tab selecting with mouse
Diffstat:
1 file changed, 17 insertions(+), 0 deletions(-)
diff --git 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,
 };
@@ -133,6 +136,20 @@ autostart() {
 }
 
 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)
 		XFreeFontSet(dpy, dc.font.set);