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; | |
} | |
- |