about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--client.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/client.c b/client.c
index e3e31b6..487cb0c 100644
--- a/client.c
+++ b/client.c
@@ -28,13 +28,15 @@ next(Client *c)
 void
 zoom(Arg *arg)
 {
-	Client **l;
+	Client **l, *c;
 
 	if(!sel)
 		return;
 
-	if(sel == next(clients)) 
-		sel = next(sel->next);
+	if(sel == next(clients) && sel->next)  {
+		if((c = next(sel->next)))
+			sel = c;
+	}
 
 	for(l = &clients; *l && *l != sel; l = &(*l)->next);
 	*l = sel->next;
@@ -497,6 +499,10 @@ resize(Client *c, Bool inc)
 		if(c->inch)
 			c->h -= (c->h - c->baseh) % c->inch;
 	}
+	if(c->x > sw) /* might happen on restart */
+		c->x = sw - c->w;
+	if(c->y > sh)
+		c->ty = c->y = sh - c->h;
 	if(c->minw && c->w < c->minw)
 		c->w = c->minw;
 	if(c->minh && c->h < c->minh)