JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
fixed misappearance of iconified windows on SIGKILL
[dwm.git] / client.c
index d11ef7f..9f46a0e 100644 (file)
--- a/client.c
+++ b/client.c
@@ -182,18 +182,11 @@ killclient(const char *arg) {
 }
 
 Bool
-loadprops(Client *c) {
+getprops(Client *c) {
        unsigned int i;
        Bool result = False;
-       XTextProperty name;
-
-       /* check if window has set a property */
-       name.nitems = 0;
-       XGetTextProperty(dpy, c->win, &name, dwmprops);
-       if(name.nitems && name.encoding == XA_STRING) {
-               strncpy(prop, (char *)name.value, sizeof prop - 1);
-               prop[sizeof prop - 1] = '\0';
-               XFree(name.value);
+
+       if(gettextprop(c->win, dwmprops, prop, sizeof prop)) {
                for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
                        if((c->tags[i] = prop[i] == '1'))
                                result = True;
@@ -249,11 +242,11 @@ manage(Window w, XWindowAttributes *wa) {
        if(t)
                for(i = 0; i < ntags; i++)
                        c->tags[i] = t->tags[i];
-       if(!loadprops(c))
+       if(!getprops(c))
                applyrules(c);
        if(!c->isfloating)
                c->isfloating = (rettrans == Success) || c->isfixed;
-       saveprops(c);
+       setprops(c);
        attach(c);
        attachstack(c);
        XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); /* some windows require this */
@@ -325,7 +318,7 @@ resize(Client *c, int x, int y, int w, int h, Bool sizehints) {
 }
 
 void
-saveprops(Client *c) {
+setprops(Client *c) {
        unsigned int i;
 
        for(i = 0; i < ntags && i < sizeof prop - 1; i++)
@@ -424,27 +417,6 @@ updatesizehints(Client *c) {
 
 void
 updatetitle(Client *c) {
-       char **list = NULL;
-       int n;
-       XTextProperty name;
-
-       name.nitems = 0;
-       c->name[0] = 0;
-       XGetTextProperty(dpy, c->win, &name, netatom[NetWMName]);
-       if(!name.nitems)
-               XGetWMName(dpy, c->win, &name);
-       if(!name.nitems)
-               return;
-       if(name.encoding == XA_STRING)
-               strncpy(c->name, (char *)name.value, sizeof c->name - 1);
-       else {
-               if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success
-               && n > 0 && *list)
-               {
-                       strncpy(c->name, *list, sizeof c->name - 1);
-                       XFreeStringList(list);
-               }
-       }
-       c->name[sizeof c->name - 1] = '\0';
-       XFree(name.value);
+       if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name))
+               gettextprop(c->win, wmatom[WMName], c->name, sizeof c->name);
 }