| tremoved Geom stuff, introduced updategeom() again, still view is somewhat brok… | |
| git clone git://src.adamsgaard.dk/dwm | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 7eb26288fc6aa4c8850f41d475230b1619df622b | |
| parent 93a4fe1052e1271f7b4f519b4f2de4e3f4e15edc | |
| Author: Anselm R Garbe <[email protected]> | |
| Date: Sun, 11 May 2008 20:20:53 +0100 | |
| removed Geom stuff, introduced updategeom() again, still view is somewhat broke… | |
| Diffstat: | |
| M config.def.h | 12 +----------- | |
| M dwm.1 | 3 --- | |
| M dwm.c | 122 +++++++++++++----------------… | |
| 3 files changed, 52 insertions(+), 85 deletions(-) | |
| --- | |
| diff --git a/config.def.h b/config.def.h | |
| t@@ -18,17 +18,8 @@ Rule rules[] = { | |
| { "Gimp", NULL, NULL, NULL, … | |
| }; | |
| -/* geometries, s{x,y,w,h} and bh are already initualized here */ | |
| -/* func name bx by bw wx wy ww wh mx my mw mh tx ty … | |
| -#define MFACT 0.55 /* master width factor [0.1 .… | |
| -DEFGEOM(single, 0, 0, sw, 0, bh, sw, sh-bh, wx, wy, mfact*ww, wh, mx+mw, wy… | |
| - | |
| -Geom geoms[] = { | |
| - /* symbol function */ | |
| - { "[]", single }, /* first entry is default */ | |
| -}; | |
| - | |
| /* layout(s) */ | |
| +#define MFACT 0.55 /* master width factor [0.1 .… | |
| #define RESIZEHINTS True /* False - respect size hints i… | |
| #define SNAP 32 /* snap pixel */ | |
| t@@ -58,7 +49,6 @@ Key keys[] = { | |
| { MODKEY|ShiftMask, XK_c, killclient, … | |
| { MODKEY, XK_space, setlayout, NU… | |
| { MODKEY|ShiftMask, XK_space, togglefloating, … | |
| - { MODKEY|ControlMask, XK_space, setgeom, … | |
| { MODKEY, XK_0, view, … | |
| { MODKEY, XK_1, view, … | |
| { MODKEY, XK_2, view, … | |
| diff --git a/dwm.1 b/dwm.1 | |
| t@@ -60,9 +60,6 @@ Start | |
| .B Mod1\-space | |
| Toggles between layouts. | |
| .TP | |
| -.B Mod1\-Control\-space | |
| -Toggles between geometries. | |
| -.TP | |
| .B Mod1\-j | |
| Focus next window. | |
| .TP | |
| diff --git a/dwm.c b/dwm.c | |
| t@@ -41,21 +41,13 @@ | |
| #include <X11/Xutil.h> | |
| /* macros */ | |
| -#define MAX(a, b) ((a)>(b)?(a):(b)) | |
| -#define MIN(a, b) ((a)<(b)?(a):(b)) | |
| -#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask) | |
| -#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask)) | |
| -#define LENGTH(x) (sizeof x / sizeof x[0]) | |
| -#define MAXTAGLEN 16 | |
| -#define MOUSEMASK (BUTTONMASK|PointerMotionMask) | |
| -#define DEFGEOM(GEONAME,BX,BY,BW,WX,WY,WW,WH,MX,MY,MW,MH,TX,TY,TW,TH,MOX,MOY,M… | |
| -void GEONAME(void) { \ | |
| - bx = (BX); by = (BY); bw = (BW); \ | |
| - wx = (WX); wy = (WY); ww = (WW); wh = (WH); \ | |
| - mx = (MX); my = (MY); mw = (MW); mh = (MH); \ | |
| - tx = (TX); ty = (TY); tw = (TW); th = (TH); \ | |
| - mox = (MOX); moy = (MOY); mow = (MOW); moh = (MOH); \ | |
| -} | |
| +#define MAX(a, b) ((a) > (b) ? (a) : (b)) | |
| +#define MIN(a, b) ((a) < (b) ? (a) : (b)) | |
| +#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask) | |
| +#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask)) | |
| +#define LENGTH(x) (sizeof x / sizeof x[0]) | |
| +#define MAXTAGLEN 16 | |
| +#define MOUSEMASK (BUTTONMASK|PointerMotionMask) | |
| /* enums */ | |
| enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ | |
| t@@ -97,11 +89,6 @@ typedef struct { | |
| } DC; /* draw context */ | |
| typedef struct { | |
| - const char *symbol; | |
| - void (*apply)(void); | |
| -} Geom; | |
| - | |
| -typedef struct { | |
| unsigned long mod; | |
| KeySym keysym; | |
| void (*func)(const char *arg); | |
| t@@ -178,7 +165,6 @@ void restack(void); | |
| void run(void); | |
| void scan(void); | |
| void setclientstate(Client *c, long state); | |
| -void setgeom(const char *arg); | |
| void setlayout(const char *arg); | |
| void setmfact(const char *arg); | |
| void setup(void); | |
| t@@ -198,7 +184,8 @@ void toggleview(const char *arg); | |
| void unban(Client *c); | |
| void unmanage(Client *c); | |
| void unmapnotify(XEvent *e); | |
| -void updatebarpos(void); | |
| +void updatebar(void); | |
| +void updategeom(void); | |
| void updatesizehints(Client *c); | |
| void updatetitle(Client *c); | |
| void updatewmhints(Client *c); | |
| t@@ -213,7 +200,7 @@ void zoom(const char *arg); | |
| char stext[256]; | |
| int screen, sx, sy, sw, sh; | |
| int (*xerrorxlib)(Display *, XErrorEvent *); | |
| -int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, … | |
| +int bx, by, bw, bh, blw, mx, my, mw, mh, tx, ty, tw, th, wx, wy, ww, wh; | |
| int seltags = 0; | |
| double mfact; | |
| unsigned int numlockmask = 0; | |
| t@@ -241,8 +228,6 @@ Client *stack = NULL; | |
| Cursor cursor[CurLast]; | |
| Display *dpy; | |
| DC dc = {0}; | |
| -Geom geoms[]; | |
| -Geom *geom = geoms; | |
| Layout layouts[]; | |
| Layout *lt = layouts; | |
| Window root, barwin; | |
| t@@ -330,14 +315,10 @@ buttonpress(XEvent *e) { | |
| XButtonPressedEvent *ev = &e->xbutton; | |
| if(ev->window == barwin) { | |
| - if((ev->x < bgw) && ev->button == Button1) { | |
| - setgeom(NULL); | |
| - return; | |
| - } | |
| - x = bgw; | |
| + x = 0; | |
| for(i = 0; i < LENGTH(tags); i++) { | |
| x += textw(tags[i]); | |
| - if(ev->x >= bgw && ev->x < x) { | |
| + if(ev->x < x) { | |
| if(ev->button == Button1) { | |
| if(ev->state & MODKEY) | |
| tag(tags[i]); | |
| t@@ -440,7 +421,9 @@ configurenotify(XEvent *e) { | |
| if(ev->window == root && (ev->width != sw || ev->height != sh)) { | |
| sw = ev->width; | |
| sh = ev->height; | |
| - setgeom(geom->symbol); | |
| + updategeom(); | |
| + updatebar(); | |
| + arrange(); | |
| } | |
| } | |
| t@@ -531,11 +514,6 @@ drawbar(void) { | |
| Client *c; | |
| dc.x = 0; | |
| - if(bgw > 0) { | |
| - dc.w = bgw; | |
| - drawtext(geom->symbol, dc.norm, False); | |
| - dc.x += bgw; | |
| - } | |
| for(c = stack; c && !isvisible(c, NULL); c = c->snext); | |
| for(i = 0; i < LENGTH(tags); i++) { | |
| dc.w = textw(tags[i]); | |
| t@@ -1064,7 +1042,7 @@ monocle(void) { | |
| for(c = clients; c; c = c->next) | |
| if((lt->isfloating || !c->isfloating) && isvisible(c, NULL)) | |
| - resize(c, mox, moy, mow - 2 * c->bw, moh - 2 * c->bw, … | |
| + resize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw, RESI… | |
| } | |
| void | |
| t@@ -1399,27 +1377,6 @@ setclientstate(Client *c, long state) { | |
| } | |
| void | |
| -setgeom(const char *arg) { | |
| - unsigned int i; | |
| - | |
| - if(!arg) { | |
| - if(++geom == &geoms[LENGTH(geoms)]) | |
| - geom = &geoms[0]; | |
| - } | |
| - else { | |
| - for(i = 0; i < LENGTH(geoms); i++) | |
| - if(!strcmp(geoms[i].symbol, arg)) | |
| - break; | |
| - if(i == LENGTH(geoms)) | |
| - return; | |
| - geom = &geoms[i]; | |
| - } | |
| - geom->apply(); | |
| - updatebarpos(); | |
| - arrange(); | |
| -} | |
| - | |
| -void | |
| setlayout(const char *arg) { | |
| unsigned int i; | |
| t@@ -1457,7 +1414,8 @@ setmfact(const char *arg) { | |
| return; | |
| mfact = d; | |
| } | |
| - setgeom(geom->symbol); | |
| + updategeom(); | |
| + arrange(); | |
| } | |
| void | |
| t@@ -1469,15 +1427,14 @@ setup(void) { | |
| screen = DefaultScreen(dpy); | |
| root = RootWindow(dpy, screen); | |
| initfont(FONT); | |
| - | |
| - /* apply default geometry */ | |
| sx = 0; | |
| sy = 0; | |
| sw = DisplayWidth(dpy, screen); | |
| sh = DisplayHeight(dpy, screen); | |
| bh = dc.font.height + 2; | |
| - mfact = MFACT; | |
| - geom->apply(); | |
| + | |
| + /* update geometry */ | |
| + updategeom(); | |
| /* init atoms */ | |
| wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); | |
| t@@ -1517,10 +1474,6 @@ setup(void) { | |
| w = textw(layouts[i].symbol); | |
| blw = MAX(blw, w); | |
| } | |
| - for(bgw = i = 0; LENGTH(geoms) > 1 && i < LENGTH(geoms); i++) { | |
| - w = textw(geoms[i].symbol); | |
| - bgw = MAX(bgw, w); | |
| - } | |
| wa.override_redirect = 1; | |
| wa.background_pixmap = ParentRelative; | |
| t@@ -1633,7 +1586,7 @@ tilemaster(unsigned int n) { | |
| Client *c = nexttiled(clients); | |
| if(n == 1) | |
| - tileresize(c, mox, moy, mow - 2 * c->bw, moh - 2 * c->bw); | |
| + tileresize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw); | |
| else | |
| tileresize(c, mx, my, mw - 2 * c->bw, mh - 2 * c->bw); | |
| return c; | |
| t@@ -1751,7 +1704,7 @@ unmapnotify(XEvent *e) { | |
| } | |
| void | |
| -updatebarpos(void) { | |
| +updatebar(void) { | |
| if(dc.drawable != 0) | |
| XFreePixmap(dpy, dc.drawable); | |
| t@@ -1760,6 +1713,34 @@ updatebarpos(void) { | |
| } | |
| void | |
| +updategeom(void) { | |
| + | |
| + /* bar geometry */ | |
| + bx = 0; | |
| + by = 0; | |
| + bw = sw; | |
| + | |
| + /* window area geometry */ | |
| + wx = sx; | |
| + wy = sy; | |
| + ww = sw; | |
| + sh = sh - bh; | |
| + | |
| + /* master area geometry */ | |
| + mfact = MFACT; | |
| + mx = wx; | |
| + my = wy; | |
| + mw = mfact * ww; | |
| + mh = wh; | |
| + | |
| + /* tile area geometry */ | |
| + tx = mx + mw; | |
| + ty = wy; | |
| + tw = ww - mw; | |
| + th = wh; | |
| +} | |
| + | |
| +void | |
| updatesizehints(Client *c) { | |
| long msize; | |
| XSizeHints size; | |
| t@@ -1912,4 +1893,3 @@ main(int argc, char *argv[]) { | |
| XCloseDisplay(dpy); | |
| return 0; | |
| } | |
| - |