X-Git-Url: https://git.xinqibao.xyz/dwm.git/blobdiff_plain/7d4a5e654c5421411f1d66360d594285d462d77f..f17e898bd133f1bd8c530116b4b5bacb7ced5da9:/main.c?ds=sidebyside

diff --git a/main.c b/main.c
index d2da0c1..c6e67e9 100644
--- a/main.c
+++ b/main.c
@@ -19,13 +19,15 @@
 
 char stext[1024];
 Bool *seltag;
-int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
-unsigned int ntags, numlockmask, modew;
+int bx, by, bw, bh, bmw, mw, screen, sx, sy, sw, sh;
+unsigned int ntags, numlockmask;
 Atom wmatom[WMLast], netatom[NetLast];
 Bool running = True;
 Bool issel = True;
+Bool maximized = False;
 Client *clients = NULL;
 Client *sel = NULL;
+Client *stack = NULL;
 Cursor cursor[CurLast];
 Display *dpy;
 DC dc = {0};
@@ -37,8 +39,7 @@ static int (*xerrorxlib)(Display *, XErrorEvent *);
 static Bool otherwm, readin;
 
 static void
-cleanup()
-{
+cleanup() {
 	close(STDIN_FILENO);
 	while(sel) {
 		resize(sel, True, TopLeft);
@@ -54,11 +55,11 @@ cleanup()
 	XDestroyWindow(dpy, barwin);
 	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
 	XSync(dpy, False);
+	free(seltag);
 }
 
 static void
-scan()
-{
+scan() {
 	unsigned int i, num;
 	Window *wins, d1, d2;
 	XWindowAttributes wa;
@@ -79,8 +80,7 @@ scan()
 }
 
 static void
-setup()
-{
+setup() {
 	int i, j;
 	unsigned int mask;
 	Window w;
@@ -109,7 +109,8 @@ setup()
 	}
 	XFree(modmap);
 
-	wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | EnterWindowMask | LeaveWindowMask;
+	wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask
+		| EnterWindowMask | LeaveWindowMask;
 	wa.cursor = cursor[CurNormal];
 	XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
 
@@ -129,7 +130,7 @@ setup()
 	dc.status[ColFG] = getcolor(STATUSFGCOLOR);
 	setfont(FONT);
 
-	modew = textw(FLOATSYMBOL) > textw(TILESYMBOL) ? textw(FLOATSYMBOL) : textw(TILESYMBOL);
+	bmw = textw(FLOATSYMBOL) > textw(TILESYMBOL) ? textw(FLOATSYMBOL) : textw(TILESYMBOL);
 	sx = sy = 0;
 	sw = DisplayWidth(dpy, screen);
 	sh = DisplayHeight(dpy, screen);
@@ -160,8 +161,7 @@ setup()
  * is already running.
  */
 static int
-xerrorstart(Display *dsply, XErrorEvent *ee)
-{
+xerrorstart(Display *dsply, XErrorEvent *ee) {
 	otherwm = True;
 	return -1;
 }
@@ -169,8 +169,7 @@ xerrorstart(Display *dsply, XErrorEvent *ee)
 /* extern */
 
 int
-getproto(Window w)
-{
+getproto(Window w) {
 	int i, format, protos, status;
 	unsigned long extra, res;
 	Atom *protocols, real;
@@ -188,8 +187,7 @@ getproto(Window w)
 }
 
 void
-sendevent(Window w, Atom a, long value)
-{
+sendevent(Window w, Atom a, long value) {
 	XEvent e;
 
 	e.type = ClientMessage;
@@ -203,35 +201,33 @@ sendevent(Window w, Atom a, long value)
 }
 
 void
-quit(Arg *arg)
-{
+quit(Arg *arg) {
 	readin = running = False;
 }
 
 /*
  * 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
- * default error handler, which calls exit().
+ * default error handler, which may call exit.
  */
 int
-xerror(Display *dpy, XErrorEvent *ee)
-{
+xerror(Display *dpy, XErrorEvent *ee) {
 	if(ee->error_code == BadWindow
 	|| (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch)
 	|| (ee->request_code == X_PolyText8 && ee->error_code == BadDrawable)
 	|| (ee->request_code == X_PolyFillRectangle && ee->error_code == BadDrawable)
 	|| (ee->request_code == X_PolySegment && ee->error_code == BadDrawable)
 	|| (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch)
-	|| (ee->request_code == X_GrabKey && ee->error_code == BadAccess))
+	|| (ee->request_code == X_GrabKey && ee->error_code == BadAccess)
+	|| (ee->request_code == X_CopyArea && ee->error_code == BadDrawable))
 		return 0;
 	fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n",
 		ee->request_code, ee->error_code);
-	return xerrorxlib(dpy, ee); /* may call exit() */
+	return xerrorxlib(dpy, ee); /* may call exit */
 }
 
 int
-main(int argc, char *argv[])
-{
+main(int argc, char *argv[]) {
 	int r, xfd;
 	fd_set rd;