client.c
changeset 966 3ad7903c9e83
parent 964 777a9d9ce70b
child 967 66f17bf2c278
equal deleted inserted replaced
965:b3f4b0b3a5d7 966:3ad7903c9e83
   183 
   183 
   184 Bool
   184 Bool
   185 loadprops(Client *c) {
   185 loadprops(Client *c) {
   186 	unsigned int i;
   186 	unsigned int i;
   187 	Bool result = False;
   187 	Bool result = False;
   188 	XTextProperty name;
   188 
   189 
   189 	if(gettextprop(c->win, dwmprops, prop, sizeof prop)) {
   190 	/* check if window has set a property */
       
   191 	name.nitems = 0;
       
   192 	XGetTextProperty(dpy, c->win, &name, dwmprops);
       
   193 	if(name.nitems && name.encoding == XA_STRING) {
       
   194 		strncpy(prop, (char *)name.value, sizeof prop - 1);
       
   195 		prop[sizeof prop - 1] = '\0';
       
   196 		XFree(name.value);
       
   197 		for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
   190 		for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
   198 			if((c->tags[i] = prop[i] == '1'))
   191 			if((c->tags[i] = prop[i] == '1'))
   199 				result = True;
   192 				result = True;
   200 		if(i < sizeof prop - 1 && prop[i] != '\0')
   193 		if(i < sizeof prop - 1 && prop[i] != '\0')
   201 			c->isfloating = prop[i] == '1';
   194 			c->isfloating = prop[i] == '1';
   422 			&& c->maxw == c->minw && c->maxh == c->minh);
   415 			&& c->maxw == c->minw && c->maxh == c->minh);
   423 }
   416 }
   424 
   417 
   425 void
   418 void
   426 updatetitle(Client *c) {
   419 updatetitle(Client *c) {
   427 	char **list = NULL;
   420 	if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name))
   428 	int n;
   421 		gettextprop(c->win, wmatom[WMName], c->name, sizeof c->name);
   429 	XTextProperty name;
   422 }
   430 
       
   431 	name.nitems = 0;
       
   432 	c->name[0] = 0;
       
   433 	XGetTextProperty(dpy, c->win, &name, netatom[NetWMName]);
       
   434 	if(!name.nitems)
       
   435 		XGetWMName(dpy, c->win, &name);
       
   436 	if(!name.nitems)
       
   437 		return;
       
   438 	if(name.encoding == XA_STRING)
       
   439 		strncpy(c->name, (char *)name.value, sizeof c->name - 1);
       
   440 	else {
       
   441 		if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success
       
   442 		&& n > 0 && *list)
       
   443 		{
       
   444 			strncpy(c->name, *list, sizeof c->name - 1);
       
   445 			XFreeStringList(list);
       
   446 		}
       
   447 	}
       
   448 	c->name[sizeof c->name - 1] = '\0';
       
   449 	XFree(name.value);
       
   450 }