applied Johannes Hofmann's patch, please test
This commit is contained in:
		
							parent
							
								
									b279cef670
								
							
						
					
					
						commit
						63d7190231
					
				
							
								
								
									
										58
									
								
								dwm.c
								
								
								
								
							
							
						
						
									
										58
									
								
								dwm.c
								
								
								
								
							| 
						 | 
					@ -159,9 +159,7 @@ static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size);
 | 
				
			||||||
static void grabbuttons(Client *c, Bool focused);
 | 
					static void grabbuttons(Client *c, Bool focused);
 | 
				
			||||||
static void grabkeys(void);
 | 
					static void grabkeys(void);
 | 
				
			||||||
static void initfont(const char *fontstr);
 | 
					static void initfont(const char *fontstr);
 | 
				
			||||||
static Bool isoccupied(unsigned int t);
 | 
					 | 
				
			||||||
static Bool isprotodel(Client *c);
 | 
					static Bool isprotodel(Client *c);
 | 
				
			||||||
static Bool isurgent(unsigned int t);
 | 
					 | 
				
			||||||
static void keypress(XEvent *e);
 | 
					static void keypress(XEvent *e);
 | 
				
			||||||
static void killclient(const Arg *arg);
 | 
					static void killclient(const Arg *arg);
 | 
				
			||||||
static void manage(Window w, XWindowAttributes *wa);
 | 
					static void manage(Window w, XWindowAttributes *wa);
 | 
				
			||||||
| 
						 | 
					@ -500,19 +498,23 @@ die(const char *errstr, ...) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
drawbar(void) {
 | 
					drawbar(void) {
 | 
				
			||||||
	int i, x;
 | 
						int x;
 | 
				
			||||||
 | 
						unsigned int i, occ = 0, urg = 0;
 | 
				
			||||||
 | 
						unsigned long *col;
 | 
				
			||||||
 | 
						Client *c;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(c = clients; c; c = c->next) {
 | 
				
			||||||
 | 
							occ |= c->tags;
 | 
				
			||||||
 | 
							if(c->isurgent)
 | 
				
			||||||
 | 
								urg |= c->tags;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dc.x = 0;
 | 
						dc.x = 0;
 | 
				
			||||||
	for(i = 0; i < LENGTH(tags); i++) {
 | 
						for(i = 0; i < LENGTH(tags); i++) {
 | 
				
			||||||
		dc.w = TEXTW(tags[i]);
 | 
							dc.w = TEXTW(tags[i]);
 | 
				
			||||||
		if(tagset[seltags] & 1 << i) {
 | 
							col = tagset[seltags] & 1 << i ? dc.sel : dc.norm;
 | 
				
			||||||
			drawtext(tags[i], dc.sel, isurgent(i));
 | 
							drawtext(tags[i], col, urg & 1 << i);
 | 
				
			||||||
			drawsquare(sel && sel->tags & 1 << i, isoccupied(i), isurgent(i), dc.sel);
 | 
							drawsquare(sel && sel->tags & 1 << i, occ & 1 << i, urg & 1 << i, col);
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		else {
 | 
					 | 
				
			||||||
			drawtext(tags[i], dc.norm, isurgent(i));
 | 
					 | 
				
			||||||
			drawsquare(sel && sel->tags & 1 << i, isoccupied(i), isurgent(i), dc.norm);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		dc.x += dc.w;
 | 
							dc.x += dc.w;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if(blw > 0) {
 | 
						if(blw > 0) {
 | 
				
			||||||
| 
						 | 
					@ -741,7 +743,7 @@ grabbuttons(Client *c, Bool focused) {
 | 
				
			||||||
			if(buttons[i].click == ClkClientWin)
 | 
								if(buttons[i].click == ClkClientWin)
 | 
				
			||||||
				for(j = 0; j < LENGTH(modifiers); j++)
 | 
									for(j = 0; j < LENGTH(modifiers); j++)
 | 
				
			||||||
					XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
 | 
										XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
 | 
				
			||||||
        } else
 | 
						} else
 | 
				
			||||||
		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False,
 | 
							XGrabButton(dpy, AnyButton, AnyModifier, c->win, False,
 | 
				
			||||||
		            BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
 | 
							            BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -749,6 +751,7 @@ grabbuttons(Client *c, Bool focused) {
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
grabkeys(void) {
 | 
					grabkeys(void) {
 | 
				
			||||||
	unsigned int i, j;
 | 
						unsigned int i, j;
 | 
				
			||||||
 | 
						unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
 | 
				
			||||||
	KeyCode code;
 | 
						KeyCode code;
 | 
				
			||||||
	XModifierKeymap *modmap;
 | 
						XModifierKeymap *modmap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -764,14 +767,9 @@ grabkeys(void) {
 | 
				
			||||||
	XUngrabKey(dpy, AnyKey, AnyModifier, root);
 | 
						XUngrabKey(dpy, AnyKey, AnyModifier, root);
 | 
				
			||||||
	for(i = 0; i < LENGTH(keys); i++) {
 | 
						for(i = 0; i < LENGTH(keys); i++) {
 | 
				
			||||||
		code = XKeysymToKeycode(dpy, keys[i].keysym);
 | 
							code = XKeysymToKeycode(dpy, keys[i].keysym);
 | 
				
			||||||
		XGrabKey(dpy, code, keys[i].mod, root, True,
 | 
							for(j = 0; j < LENGTH(modifiers); j++)
 | 
				
			||||||
				GrabModeAsync, GrabModeAsync);
 | 
								XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, True,
 | 
				
			||||||
		XGrabKey(dpy, code, keys[i].mod|LockMask, root, True,
 | 
								         GrabModeAsync, GrabModeAsync);
 | 
				
			||||||
				GrabModeAsync, GrabModeAsync);
 | 
					 | 
				
			||||||
		XGrabKey(dpy, code, keys[i].mod|numlockmask, root, True,
 | 
					 | 
				
			||||||
				GrabModeAsync, GrabModeAsync);
 | 
					 | 
				
			||||||
		XGrabKey(dpy, code, keys[i].mod|numlockmask|LockMask, root, True,
 | 
					 | 
				
			||||||
				GrabModeAsync, GrabModeAsync);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -815,16 +813,6 @@ initfont(const char *fontstr) {
 | 
				
			||||||
	dc.font.height = dc.font.ascent + dc.font.descent;
 | 
						dc.font.height = dc.font.ascent + dc.font.descent;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bool
 | 
					 | 
				
			||||||
isoccupied(unsigned int t) {
 | 
					 | 
				
			||||||
	Client *c;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for(c = clients; c; c = c->next)
 | 
					 | 
				
			||||||
		if(c->tags & 1 << t)
 | 
					 | 
				
			||||||
			return True;
 | 
					 | 
				
			||||||
	return False;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Bool
 | 
					Bool
 | 
				
			||||||
isprotodel(Client *c) {
 | 
					isprotodel(Client *c) {
 | 
				
			||||||
	int i, n;
 | 
						int i, n;
 | 
				
			||||||
| 
						 | 
					@ -840,16 +828,6 @@ isprotodel(Client *c) {
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bool
 | 
					 | 
				
			||||||
isurgent(unsigned int t) {
 | 
					 | 
				
			||||||
	Client *c;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for(c = clients; c; c = c->next)
 | 
					 | 
				
			||||||
		if(c->isurgent && c->tags & 1 << t)
 | 
					 | 
				
			||||||
			return True;
 | 
					 | 
				
			||||||
	return False;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
keypress(XEvent *e) {
 | 
					keypress(XEvent *e) {
 | 
				
			||||||
	unsigned int i;
 | 
						unsigned int i;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue