added general centralization rule for new clients (works around various borken apps)
authorAnselm R.Garbe <arg@10ksloc.org>
Wed, 16 Aug 2006 15:57:36 +0200
changeset 306 71f02d14dce1
parent 305 f7978c6395f5
child 307 ec8a66a2b9cc
added general centralization rule for new clients (works around various borken apps)
client.c
tag.c
--- a/client.c	Wed Aug 16 15:31:24 2006 +0200
+++ b/client.c	Wed Aug 16 15:57:36 2006 +0200
@@ -187,7 +187,7 @@
 void
 manage(Window w, XWindowAttributes *wa)
 {
-	Client *c;
+	Client *c, *tc;
 	Window trans;
 	XSetWindowAttributes twa;
 
@@ -258,6 +258,15 @@
 				c->maxw == c->minw && c->maxh == c->minh);
 	settitle(c);
 
+	if(trans && (tc = getclient(trans))) {
+		c->x = (tc->x + tc->w / 2) - (c->w / 2);
+		c->y = (tc->y + tc->h / 2) - (c->h / 2);
+	}
+	else {
+		c->x = (sw / 2) - (c->w / 2);
+		c->y = ((sh - bh) / 2) - (c->h / 2) + bh;
+	}
+
 	if(isvisible(c))
 		sel = c;
 	arrange(NULL);
--- a/tag.c	Wed Aug 16 15:31:24 2006 +0200
+++ b/tag.c	Wed Aug 16 15:57:36 2006 +0200
@@ -281,7 +281,10 @@
 togglemode(Arg *arg)
 {
 	arrange = arrange == dofloat ? dotile : dofloat;
-	arrange(NULL);
+	if(sel)
+		arrange(NULL);
+	else
+		drawstatus();
 }
 
 void