JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
moved transient_for tag inheritance to settags
authorAnselm R. Garbe <arg@10kloc.org>
Wed, 6 Sep 2006 07:21:17 +0000 (09:21 +0200)
committerAnselm R. Garbe <arg@10kloc.org>
Wed, 6 Sep 2006 07:21:17 +0000 (09:21 +0200)
client.c
dwm.h
tag.c

index 4f2a69c..586a87f 100644 (file)
--- a/client.c
+++ b/client.c
@@ -199,7 +199,7 @@ void
 manage(Window w, XWindowAttributes *wa)
 {
        unsigned int i;
-       Client *c, *tc;
+       Client *c;
        Window trans;
        XSetWindowAttributes twa;
 
@@ -238,11 +238,7 @@ manage(Window w, XWindowAttributes *wa)
                        CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
 
        grabbuttons(c, False);
-       if((tc = getclient(trans))) /* inherit tags */
-               for(i = 0; i < ntags; i++)
-                       c->tags[i] = tc->tags[i];
-       else
-               settags(c);
+       settags(c, getclient(trans));
        if(!c->isfloat)
                c->isfloat = trans
                        || (c->maxw && c->minw &&
diff --git a/dwm.h b/dwm.h
index 9f1e7bf..eba3a6a 100644 (file)
--- a/dwm.h
+++ b/dwm.h
@@ -115,7 +115,7 @@ extern int xerror(Display *dsply, XErrorEvent *ee);
 extern void initrregs();
 extern Client *getnext(Client *c);
 extern Client *getprev(Client *c);
-extern void settags(Client *c);
+extern void settags(Client *c, Client *trans);
 extern void tag(Arg *arg);
 extern void toggletag(Arg *arg);
 
diff --git a/tag.c b/tag.c
index 9e997f9..fafc2c5 100644 (file)
--- a/tag.c
+++ b/tag.c
@@ -76,15 +76,19 @@ initrregs()
 }
 
 void
-settags(Client *c)
+settags(Client *c, Client *trans)
 {
        char prop[512];
        unsigned int i, j;
        regmatch_t tmp;
-       Bool matched = False;
+       Bool matched = trans != NULL;
        XClassHint ch;
 
-       if(XGetClassHint(dpy, c->win, &ch)) {
+       if(matched) {
+               for(i = 0; i < ntags; i++)
+                       c->tags[i] = trans->tags[i];
+       }
+       else if(XGetClassHint(dpy, c->win, &ch)) {
                snprintf(prop, sizeof(prop), "%s:%s:%s",
                                ch.res_class ? ch.res_class : "",
                                ch.res_name ? ch.res_name : "", c->name);