JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
removed a bunch of lines through making function signatures more consistent with...
[dwm.git] / main.c
diff --git a/main.c b/main.c
index 561aa37..c6e67e9 100644 (file)
--- a/main.c
+++ b/main.c
 
 char stext[1024];
 Bool *seltag;
-int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
+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);
 
@@ -121,11 +122,15 @@ setup()
        seltag[0] = True;
 
        /* style */
-       dc.bg = getcolor(BGCOLOR);
-       dc.fg = getcolor(FGCOLOR);
-       dc.border = getcolor(BORDERCOLOR);
+       dc.norm[ColBG] = getcolor(NORMBGCOLOR);
+       dc.norm[ColFG] = getcolor(NORMFGCOLOR);
+       dc.sel[ColBG] = getcolor(SELBGCOLOR);
+       dc.sel[ColFG] = getcolor(SELFGCOLOR);
+       dc.status[ColBG] = getcolor(STATUSBGCOLOR);
+       dc.status[ColFG] = getcolor(STATUSFGCOLOR);
        setfont(FONT);
 
+       bmw = textw(FLOATSYMBOL) > textw(TILESYMBOL) ? textw(FLOATSYMBOL) : textw(TILESYMBOL);
        sx = sy = 0;
        sw = DisplayWidth(dpy, screen);
        sh = DisplayHeight(dpy, screen);
@@ -133,7 +138,7 @@ setup()
 
        bx = by = 0;
        bw = sw;
-       dc.h = bh = dc.font.height + 4;
+       dc.h = bh = dc.font.height + 2;
        wa.override_redirect = 1;
        wa.background_pixmap = ParentRelative;
        wa.event_mask = ButtonPressMask | ExposureMask;
@@ -145,6 +150,7 @@ setup()
 
        dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
        dc.gc = XCreateGC(dpy, root, 0, 0);
+       XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
 
        issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
        strcpy(stext, "dwm-"VERSION);
@@ -155,8 +161,7 @@ setup()
  * is already running.
  */
 static int
-xerrorstart(Display *dsply, XErrorEvent *ee)
-{
+xerrorstart(Display *dsply, XErrorEvent *ee) {
        otherwm = True;
        return -1;
 }
@@ -164,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;
@@ -183,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;
@@ -198,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;