cleanup
- unify multi-line expression alignment style. - unify multi-line function call alignment style. - simplify client moving on monitor count decrease. - clarify comment for focusin(). - remove old confusing comment about input focus fix in focusmon(). The explanation is already in the old commit message, so no need to keep it in the code. - remove old comment describing even older state of the code in focus(). - unify comment style. - break up some long lines. - fix some typos and grammar.
This commit is contained in:
		
							parent
							
								
									bb3bd6fec3
								
							
						
					
					
						commit
						2952b68db8
					
				
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							| @ -16,7 +16,7 @@ MIT/X Consortium License | |||||||
| © 2011 Christoph Lohmann <20h@r-36.net> | © 2011 Christoph Lohmann <20h@r-36.net> | ||||||
| © 2015-2016 Quentin Rameau <quinq@fifth.space> | © 2015-2016 Quentin Rameau <quinq@fifth.space> | ||||||
| © 2015-2016 Eric Pruitt <eric.pruitt@gmail.com> | © 2015-2016 Eric Pruitt <eric.pruitt@gmail.com> | ||||||
| © 2016 Markus Teich <markus.teich@stusta.mhn.de> | © 2016-2017 Markus Teich <markus.teich@stusta.mhn.de> | ||||||
| 
 | 
 | ||||||
| Permission is hereby granted, free of charge, to any person obtaining a | Permission is hereby granted, free of charge, to any person obtaining a | ||||||
| copy of this software and associated documentation files (the "Software"), | copy of this software and associated documentation files (the "Software"), | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ static const char col_cyan[]        = "#005577"; | |||||||
| static const char *colors[][3]      = { | static const char *colors[][3]      = { | ||||||
| 	/*               fg         bg         border   */ | 	/*               fg         bg         border   */ | ||||||
| 	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, | 	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, | ||||||
| 	[SchemeSel] =  { col_gray4, col_cyan,  col_cyan  }, | 	[SchemeSel]  = { col_gray4, col_cyan,  col_cyan  }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* tagging */ | /* tagging */ | ||||||
|  | |||||||
							
								
								
									
										64
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								dwm.c
									
									
									
									
									
								
							| @ -3,7 +3,7 @@ | |||||||
|  * dynamic window manager is designed like any other X client as well. It is |  * dynamic window manager is designed like any other X client as well. It is | ||||||
|  * driven through handling X events. In contrast to other X clients, a window |  * driven through handling X events. In contrast to other X clients, a window | ||||||
|  * manager selects for SubstructureRedirectMask on the root window, to receive |  * manager selects for SubstructureRedirectMask on the root window, to receive | ||||||
|  * events about window (dis-)appearance.  Only one X connection at a time is |  * events about window (dis-)appearance. Only one X connection at a time is | ||||||
|  * allowed to select for this event mask. |  * allowed to select for this event mask. | ||||||
|  * |  * | ||||||
|  * The event handlers of dwm are organized in an array which is accessed |  * The event handlers of dwm are organized in an array which is accessed | ||||||
| @ -11,7 +11,7 @@ | |||||||
|  * in O(1) time. |  * in O(1) time. | ||||||
|  * |  * | ||||||
|  * Each child of the root window is called a client, except windows which have |  * Each child of the root window is called a client, except windows which have | ||||||
|  * set the override_redirect flag.  Clients are organized in a linked client |  * set the override_redirect flag. Clients are organized in a linked client | ||||||
|  * list on each monitor, the focus history is remembered through a stack list |  * list on each monitor, the focus history is remembered through a stack list | ||||||
|  * on each monitor. Each client contains a bit array to indicate the tags of a |  * on each monitor. Each client contains a bit array to indicate the tags of a | ||||||
|  * client. |  * client. | ||||||
| @ -517,7 +517,8 @@ clientmessage(XEvent *e) | |||||||
| 	if (!c) | 	if (!c) | ||||||
| 		return; | 		return; | ||||||
| 	if (cme->message_type == netatom[NetWMState]) { | 	if (cme->message_type == netatom[NetWMState]) { | ||||||
| 		if (cme->data.l[1] == netatom[NetWMFullscreen] || cme->data.l[2] == netatom[NetWMFullscreen]) | 		if (cme->data.l[1] == netatom[NetWMFullscreen] | ||||||
|  | 		|| cme->data.l[2] == netatom[NetWMFullscreen]) | ||||||
| 			setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD    */ | 			setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD    */ | ||||||
| 			              || (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen))); | 			              || (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen))); | ||||||
| 	} else if (cme->message_type == netatom[NetActiveWindow]) { | 	} else if (cme->message_type == netatom[NetActiveWindow]) { | ||||||
| @ -783,7 +784,6 @@ focus(Client *c) | |||||||
| { | { | ||||||
| 	if (!c || !ISVISIBLE(c)) | 	if (!c || !ISVISIBLE(c)) | ||||||
| 		for (c = selmon->stack; c && !ISVISIBLE(c); c = c->snext); | 		for (c = selmon->stack; c && !ISVISIBLE(c); c = c->snext); | ||||||
| 	/* was if (selmon->sel) */ |  | ||||||
| 	if (selmon->sel && selmon->sel != c) | 	if (selmon->sel && selmon->sel != c) | ||||||
| 		unfocus(selmon->sel, 0); | 		unfocus(selmon->sel, 0); | ||||||
| 	if (c) { | 	if (c) { | ||||||
| @ -804,7 +804,7 @@ focus(Client *c) | |||||||
| 	drawbars(); | 	drawbars(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* there are some broken focus acquiring clients */ | /* there are some broken focus acquiring clients needing extra handling */ | ||||||
| void | void | ||||||
| focusin(XEvent *e) | focusin(XEvent *e) | ||||||
| { | { | ||||||
| @ -823,8 +823,7 @@ focusmon(const Arg *arg) | |||||||
| 		return; | 		return; | ||||||
| 	if ((m = dirtomon(arg->i)) == selmon) | 	if ((m = dirtomon(arg->i)) == selmon) | ||||||
| 		return; | 		return; | ||||||
| 	unfocus(selmon->sel, 0); /* s/1/0/ fixes input focus issues
 | 	unfocus(selmon->sel, 0); | ||||||
| 					in gedit and anjuta */ |  | ||||||
| 	selmon = m; | 	selmon = m; | ||||||
| 	focus(NULL); | 	focus(NULL); | ||||||
| } | } | ||||||
| @ -961,7 +960,7 @@ grabkeys(void) | |||||||
| 			if ((code = XKeysymToKeycode(dpy, keys[i].keysym))) | 			if ((code = XKeysymToKeycode(dpy, keys[i].keysym))) | ||||||
| 				for (j = 0; j < LENGTH(modifiers); j++) | 				for (j = 0; j < LENGTH(modifiers); j++) | ||||||
| 					XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, | 					XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, | ||||||
| 						 True, GrabModeAsync, GrabModeAsync); | 					         True, GrabModeAsync, GrabModeAsync); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -1151,7 +1150,7 @@ movemouse(const Arg *arg) | |||||||
| 	ocx = c->x; | 	ocx = c->x; | ||||||
| 	ocy = c->y; | 	ocy = c->y; | ||||||
| 	if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, | 	if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, | ||||||
| 	None, cursor[CurMove]->cursor, CurrentTime) != GrabSuccess) | 	    None, cursor[CurMove]->cursor, CurrentTime) != GrabSuccess) | ||||||
| 		return; | 		return; | ||||||
| 	if (!getrootptr(&x, &y)) | 	if (!getrootptr(&x, &y)) | ||||||
| 		return; | 		return; | ||||||
| @ -1434,7 +1433,7 @@ setclientstate(Client *c, long state) | |||||||
| 	long data[] = { state, None }; | 	long data[] = { state, None }; | ||||||
| 
 | 
 | ||||||
| 	XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, | 	XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, | ||||||
| 			PropModeReplace, (unsigned char *)data, 2); | 	                PropModeReplace, (unsigned char *)data, 2); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int | int | ||||||
| @ -1516,7 +1515,7 @@ setlayout(const Arg *arg) | |||||||
| 		drawbar(selmon); | 		drawbar(selmon); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* arg > 1.0 will set mfact absolutly */ | /* arg > 1.0 will set mfact absolutely */ | ||||||
| void | void | ||||||
| setmfact(const Arg *arg) | setmfact(const Arg *arg) | ||||||
| { | { | ||||||
| @ -1581,19 +1580,20 @@ setup(void) | |||||||
| 	/* supporting window for NetWMCheck */ | 	/* supporting window for NetWMCheck */ | ||||||
| 	wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); | 	wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); | ||||||
| 	XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32, | 	XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32, | ||||||
| 		PropModeReplace, (unsigned char *) &wmcheckwin, 1); | 	                PropModeReplace, (unsigned char *) &wmcheckwin, 1); | ||||||
| 	XChangeProperty(dpy, wmcheckwin, netatom[NetWMName], utf8string, 8, | 	XChangeProperty(dpy, wmcheckwin, netatom[NetWMName], utf8string, 8, | ||||||
| 		PropModeReplace, (unsigned char *) "dwm", 4); | 	                PropModeReplace, (unsigned char *) "dwm", 4); | ||||||
| 	XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32, | 	XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32, | ||||||
| 		PropModeReplace, (unsigned char *) &wmcheckwin, 1); | 	                PropModeReplace, (unsigned char *) &wmcheckwin, 1); | ||||||
| 	/* EWMH support per view */ | 	/* EWMH support per view */ | ||||||
| 	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, | 	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, | ||||||
| 			PropModeReplace, (unsigned char *) netatom, NetLast); | 	                PropModeReplace, (unsigned char *) netatom, NetLast); | ||||||
| 	XDeleteProperty(dpy, root, netatom[NetClientList]); | 	XDeleteProperty(dpy, root, netatom[NetClientList]); | ||||||
| 	/* select for events */ | 	/* select events */ | ||||||
| 	wa.cursor = cursor[CurNormal]->cursor; | 	wa.cursor = cursor[CurNormal]->cursor; | ||||||
| 	wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask|PointerMotionMask | 	wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask | ||||||
| 	                |EnterWindowMask|LeaveWindowMask|StructureNotifyMask|PropertyChangeMask; | 	                |ButtonPressMask|PointerMotionMask|EnterWindowMask | ||||||
|  | 	                |LeaveWindowMask|StructureNotifyMask|PropertyChangeMask; | ||||||
| 	XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa); | 	XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa); | ||||||
| 	XSelectInput(dpy, root, wa.event_mask); | 	XSelectInput(dpy, root, wa.event_mask); | ||||||
| 	grabkeys(); | 	grabkeys(); | ||||||
| @ -1769,12 +1769,11 @@ unmanage(Client *c, int destroyed) | |||||||
| 	Monitor *m = c->mon; | 	Monitor *m = c->mon; | ||||||
| 	XWindowChanges wc; | 	XWindowChanges wc; | ||||||
| 
 | 
 | ||||||
| 	/* The server grab construct avoids race conditions. */ |  | ||||||
| 	detach(c); | 	detach(c); | ||||||
| 	detachstack(c); | 	detachstack(c); | ||||||
| 	if (!destroyed) { | 	if (!destroyed) { | ||||||
| 		wc.border_width = c->oldbw; | 		wc.border_width = c->oldbw; | ||||||
| 		XGrabServer(dpy); | 		XGrabServer(dpy); /* avoid race conditions */ | ||||||
| 		XSetErrorHandler(xerrordummy); | 		XSetErrorHandler(xerrordummy); | ||||||
| 		XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */ | 		XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */ | ||||||
| 		XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | 		XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | ||||||
| @ -1871,8 +1870,8 @@ updategeom(void) | |||||||
| 				memcpy(&unique[j++], &info[i], sizeof(XineramaScreenInfo)); | 				memcpy(&unique[j++], &info[i], sizeof(XineramaScreenInfo)); | ||||||
| 		XFree(info); | 		XFree(info); | ||||||
| 		nn = j; | 		nn = j; | ||||||
| 		if (n <= nn) { | 		if (n <= nn) { /* new monitors available */ | ||||||
| 			for (i = 0; i < (nn - n); i++) { /* new monitors available */ | 			for (i = 0; i < (nn - n); i++) { | ||||||
| 				for (m = mons; m && m->next; m = m->next); | 				for (m = mons; m && m->next; m = m->next); | ||||||
| 				if (m) | 				if (m) | ||||||
| 					m->next = createmon(); | 					m->next = createmon(); | ||||||
| @ -1881,8 +1880,8 @@ updategeom(void) | |||||||
| 			} | 			} | ||||||
| 			for (i = 0, m = mons; i < nn && m; m = m->next, i++) | 			for (i = 0, m = mons; i < nn && m; m = m->next, i++) | ||||||
| 				if (i >= n | 				if (i >= n | ||||||
| 				|| (unique[i].x_org != m->mx || unique[i].y_org != m->my | 				|| unique[i].x_org != m->mx || unique[i].y_org != m->my | ||||||
| 				    || unique[i].width != m->mw || unique[i].height != m->mh)) | 				|| unique[i].width != m->mw || unique[i].height != m->mh) | ||||||
| 				{ | 				{ | ||||||
| 					dirty = 1; | 					dirty = 1; | ||||||
| 					m->num = i; | 					m->num = i; | ||||||
| @ -1892,13 +1891,11 @@ updategeom(void) | |||||||
| 					m->mh = m->wh = unique[i].height; | 					m->mh = m->wh = unique[i].height; | ||||||
| 					updatebarpos(m); | 					updatebarpos(m); | ||||||
| 				} | 				} | ||||||
| 		} else { | 		} else { /* less monitors available nn < n */ | ||||||
| 			/* less monitors available nn < n */ |  | ||||||
| 			for (i = nn; i < n; i++) { | 			for (i = nn; i < n; i++) { | ||||||
| 				for (m = mons; m && m->next; m = m->next); | 				for (m = mons; m && m->next; m = m->next); | ||||||
| 				while (m->clients) { | 				while ((c = m->clients)) { | ||||||
| 					dirty = 1; | 					dirty = 1; | ||||||
| 					c = m->clients; |  | ||||||
| 					m->clients = c->next; | 					m->clients = c->next; | ||||||
| 					detachstack(c); | 					detachstack(c); | ||||||
| 					c->mon = mons; | 					c->mon = mons; | ||||||
| @ -1913,8 +1910,7 @@ updategeom(void) | |||||||
| 		free(unique); | 		free(unique); | ||||||
| 	} else | 	} else | ||||||
| #endif /* XINERAMA */ | #endif /* XINERAMA */ | ||||||
| 	/* default monitor setup */ | 	{ /* default monitor setup */ | ||||||
| 	{ |  | ||||||
| 		if (!mons) | 		if (!mons) | ||||||
| 			mons = createmon(); | 			mons = createmon(); | ||||||
| 		if (mons->mw != sw || mons->mh != sh) { | 		if (mons->mw != sw || mons->mh != sh) { | ||||||
| @ -1988,7 +1984,7 @@ updatesizehints(Client *c) | |||||||
| 	} else | 	} else | ||||||
| 		c->maxa = c->mina = 0.0; | 		c->maxa = c->mina = 0.0; | ||||||
| 	c->isfixed = (c->maxw && c->minw && c->maxh && c->minh | 	c->isfixed = (c->maxw && c->minw && c->maxh && c->minh | ||||||
| 	             && c->maxw == c->minw && c->maxh == c->minh); | 	              && c->maxw == c->minw && c->maxh == c->minh); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| @ -2082,8 +2078,8 @@ wintomon(Window w) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* There's no way to check accesses to destroyed windows, thus those cases are
 | /* There's no way to check accesses to destroyed windows, thus those cases are
 | ||||||
|  * ignored (especially on UnmapNotify's).  Other types of errors call Xlibs |  * ignored (especially on UnmapNotify's). Other types of errors call Xlibs | ||||||
|  * default error handler, which may call exit.  */ |  * default error handler, which may call exit. */ | ||||||
| int | int | ||||||
| xerror(Display *dpy, XErrorEvent *ee) | xerror(Display *dpy, XErrorEvent *ee) | ||||||
| { | { | ||||||
| @ -2098,7 +2094,7 @@ xerror(Display *dpy, XErrorEvent *ee) | |||||||
| 	|| (ee->request_code == X_CopyArea && ee->error_code == BadDrawable)) | 	|| (ee->request_code == X_CopyArea && ee->error_code == BadDrawable)) | ||||||
| 		return 0; | 		return 0; | ||||||
| 	fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n", | 	fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n", | ||||||
| 			ee->request_code, ee->error_code); | 	        ee->request_code, ee->error_code); | ||||||
| 	return xerrorxlib(dpy, ee); /* may call exit */ | 	return xerrorxlib(dpy, ee); /* may call exit */ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Markus Teich
						Markus Teich