X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=main.c;h=614faa08cc129e82151c2a3a334f9e55d65dfae3;hb=37e062b0ed475fb6d9030f05b353c4fb79b7c6e5;hp=7d3479e82b20865ae3ce3355b7dc625b68780c41;hpb=22399a3bc05406a89f6ad717800b4d9ba41f6e0a;p=dwm.git diff --git a/main.c b/main.c index 7d3479e..614faa0 100644 --- a/main.c +++ b/main.c @@ -18,7 +18,7 @@ char stext[256]; int screen, sx, sy, sw, sh, wax, way, waw, wah; -unsigned int bh, ntags, numlockmask; +unsigned int bh, bpos, ntags, numlockmask; Atom wmatom[WMLast], netatom[NetLast]; Bool *seltag; Bool selscreen = True; @@ -163,9 +163,10 @@ setup(void) { XFreeModifiermap(modmap); /* select for events */ wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask - | EnterWindowMask | LeaveWindowMask; + | EnterWindowMask | LeaveWindowMask | StructureNotifyMask; wa.cursor = cursor[CurNormal]; XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa); + XSelectInput(dpy, root, wa.event_mask); grabkeys(); compileregs(); for(ntags = 0; tags[ntags]; ntags++); @@ -189,17 +190,14 @@ setup(void) { wa.override_redirect = 1; wa.background_pixmap = ParentRelative; wa.event_mask = ButtonPressMask | ExposureMask; - barwin = XCreateWindow(dpy, root, sx, sy + (TOPBAR ? 0 : sh - bh), sw, bh, 0, + barwin = XCreateWindow(dpy, root, sx, sy, sw, bh, 0, DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen), CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); XDefineCursor(dpy, barwin, cursor[CurNormal]); + bpos = BARPOS; + updatebarpos(); XMapRaised(dpy, barwin); strcpy(stext, "dwm-"VERSION); - /* windowarea */ - wax = sx; - way = sy + (TOPBAR ? bh : 0); - wah = sh - bh; - waw = sw; /* pixmap for everything */ dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); dc.gc = XCreateGC(dpy, root, 0, 0); @@ -227,6 +225,28 @@ quit(const char *arg) { readin = running = False; } +void +updatebarpos(void) { + wax = sx; + way = sy; + wah = sh; + waw = sw; + switch(bpos) { + default: + wah -= bh; + way += bh; + XMoveWindow(dpy, barwin, sx, sy); + break; + case BarBot: + wah -= bh; + XMoveWindow(dpy, barwin, sx, sy + wah); + break; + case BarOff: + XMoveWindow(dpy, barwin, sx, sy - bh); + break; + } +} + /* 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 may call exit.