applied Connors cleanup patch of Eckehards proposed fix of applyrules(), thanks everyone involved
This commit is contained in:
		
							
								
								
									
										40
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								dwm.c
									
									
									
									
									
								
							@@ -289,31 +289,31 @@ applyrules(Client *c) {
 | 
				
			|||||||
	unsigned int i;
 | 
						unsigned int i;
 | 
				
			||||||
	const Rule *r;
 | 
						const Rule *r;
 | 
				
			||||||
	Monitor *m;
 | 
						Monitor *m;
 | 
				
			||||||
	XClassHint ch = { 0 };
 | 
						XClassHint ch = { NULL, NULL };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* rule matching */
 | 
						/* rule matching */
 | 
				
			||||||
	c->isfloating = c->tags = 0;
 | 
						c->isfloating = c->tags = 0;
 | 
				
			||||||
	if(XGetClassHint(dpy, c->win, &ch)) {
 | 
						XGetClassHint(dpy, c->win, &ch);
 | 
				
			||||||
		class = ch.res_class ? ch.res_class : broken;
 | 
						class    = ch.res_class ? ch.res_class : broken;
 | 
				
			||||||
		instance = ch.res_name ? ch.res_name : broken;
 | 
						instance = ch.res_name  ? ch.res_name  : broken;
 | 
				
			||||||
		for(i = 0; i < LENGTH(rules); i++) {
 | 
					
 | 
				
			||||||
			r = &rules[i];
 | 
						for(i = 0; i < LENGTH(rules); i++) {
 | 
				
			||||||
			if((!r->title || strstr(c->name, r->title))
 | 
							r = &rules[i];
 | 
				
			||||||
			&& (!r->class || strstr(class, r->class))
 | 
							if((!r->title || strstr(c->name, r->title))
 | 
				
			||||||
			&& (!r->instance || strstr(instance, r->instance)))
 | 
							&& (!r->class || strstr(class, r->class))
 | 
				
			||||||
			{
 | 
							&& (!r->instance || strstr(instance, r->instance)))
 | 
				
			||||||
				c->isfloating = r->isfloating;
 | 
							{
 | 
				
			||||||
				c->tags |= r->tags;
 | 
								c->isfloating = r->isfloating;
 | 
				
			||||||
				for(m = mons; m && m->num != r->monitor; m = m->next);
 | 
								c->tags |= r->tags;
 | 
				
			||||||
				if(m)
 | 
								for(m = mons; m && m->num != r->monitor; m = m->next);
 | 
				
			||||||
					c->mon = m;
 | 
								if(m)
 | 
				
			||||||
			}
 | 
									c->mon = m;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		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);
 | 
				
			||||||
	c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags];
 | 
						c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user