dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 815f9c054d1d1fe0c0878f01399561d7758bf1ce
parent ec11a3470c2775a75df00e3b69ee6ef60a467e34
Author: arg@localhost.localdomain <unknown>
Date:   Mon,  1 Sep 2008 08:22:11 +0000

merged merge
Diffstat:
Mdwm.c | 35++++++++++++++++-------------------
1 file changed, 16 insertions(+), 19 deletions(-)
diff --git a/dwm.c b/dwm.c
@@ -61,7 +61,7 @@
 enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */
 enum { ColBorder, ColFG, ColBG, ColLast };              /* color */
 enum { NetSupported, NetWMName, NetLast };              /* EWMH atoms */
-enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */
+enum { WMProtocols, WMDelete, WMState, WMLast };        /* default atoms */
 enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
        ClkClientWin, ClkRootWin, ClkLast };             /* clicks */
 
@@ -233,7 +233,7 @@ static Client *sel = NULL;
 static Client *stack = NULL;
 static Cursor cursor[CurLast];
 static Display *dpy;
-static DC dc = {0};
+static DC dc;
 static Layout *lt[] = { NULL, NULL };
 static Window root, barwin;
 /* configuration, allows nested code to access above variables */
@@ -250,20 +250,21 @@ applyrules(Client *c) {
     XClassHint ch = { 0 };
 
     /* rule matching */
-    XGetClassHint(dpy, c->win, &ch);
-    for(i = 0; i < LENGTH(rules); i++) {
-        r = &rules[i];
-        if((!r->title || strstr(c->name, r->title))
-        && (!r->class || (ch.res_class && strstr(ch.res_class, r->class)))
-        && (!r->instance || (ch.res_name && strstr(ch.res_name, r->instance)))) {
-            c->isfloating = r->isfloating;
-            c->tags |= r->tags & TAGMASK;
+    if(XGetClassHint(dpy, c->win, &ch)) {
+        for(i = 0; i < LENGTH(rules); i++) {
+            r = &rules[i];
+            if((!r->title || strstr(c->name, r->title))
+            && (!r->class || (ch.res_class && strstr(ch.res_class, r->class)))
+            && (!r->instance || (ch.res_name && strstr(ch.res_name, r->instance)))) {
+                c->isfloating = r->isfloating;
+                c->tags |= r->tags & TAGMASK;
+            }
         }
+        if(ch.res_class)
+            XFree(ch.res_class);
+        if(ch.res_name)
+            XFree(ch.res_name);
     }
-    if(ch.res_class)
-        XFree(ch.res_class);
-    if(ch.res_name)
-        XFree(ch.res_name);
     if(!c->tags)
         c->tags = tagset[seltags];
 }
@@ -796,9 +797,6 @@ initfont(const char *fontstr) {
         }
     }
     else {
-        if(dc.font.xfont)
-            XFreeFont(dpy, dc.font.xfont);
-        dc.font.xfont = NULL;
         if(!(dc.font.xfont = XLoadQueryFont(dpy, fontstr))
         && !(dc.font.xfont = XLoadQueryFont(dpy, "fixed")))
             die("error, cannot load font: '%s'\n", fontstr);
@@ -1326,7 +1324,6 @@ setup(void) {
     /* init atoms */
     wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
     wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
-    wmatom[WMName] = XInternAtom(dpy, "WM_NAME", False);
     wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
     netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
     netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
@@ -1634,7 +1631,7 @@ updatesizehints(Client *c) {
 void
 updatetitle(Client *c) {
     if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name))
-        gettextprop(c->win, wmatom[WMName], c->name, sizeof c->name);
+        gettextprop(c->win, XA_WM_NAME, c->name, sizeof c->name);
 }
 
 void