commit 13e3aca1cbc322308729d2e6644a420daf811c93
parent c6be3a7d9f36725fa968383e979d1ce00488bd8b
Author: Enno Boland (tox) <tox@s01.de>
Date:   Tue, 16 Feb 2010 19:53:03 +0100
improved focus handling
Diffstat:
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/config.def.h b/config.def.h
@@ -11,6 +11,7 @@ static const Bool foreground   = False;
 #define MODKEY ControlMask
 static Key keys[] = { \
 	/* modifier                     key        function        argument */
+	{ MODKEY|ShiftMask,             XK_Return, focusonce,      { 0 } },
 	{ MODKEY|ShiftMask,             XK_Return, spawn,          { .v = (char*[]){ "surf", "-e", winid, NULL} } },
 	{ MODKEY|ShiftMask,             XK_l,      rotate,         { .i = +1 } },
 	{ MODKEY|ShiftMask,             XK_h,      rotate,         { .i = -1 } },
diff --git a/tabbed.c b/tabbed.c
@@ -399,7 +399,6 @@ focus(Client *c) {
 	XStoreName(dpy, win, c->name);
 	if(sel != c) {
 		lastsel = sel;
-		puts("set");
 	}
 	sel = c;
 	drawbar();
@@ -605,6 +604,8 @@ manage(Window w) {
 		XSync(dpy, False);
 		focus(nextfocus ? c : sel);
 		nextfocus = foreground;
+		if(!lastsel)
+			lastsel = c;
 	}
 }
 
@@ -794,9 +795,13 @@ unmanage(Client *c) {
 		pc->next = c->next;
 	}
 	if(c == lastsel)
-		lastsel = pc;
-	focus(lastsel);
+		lastsel = clients;
+	if(c == sel) {
+		sel = pc;
+		focus(lastsel);
+	}
 	free(c);
+	drawbar();
 	XSync(dpy, False);
 }