| tseveral changes towards 5.3, XINERAMA is disabled by default, introduced usegr… | |
| git clone git://src.adamsgaard.dk/dwm | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit ea8a4ca46a9577997e0a3f30e211c644477c6a00 | |
| parent 4883a062216fa7fca0d4b6250478cf53ce1210f0 | |
| Author: Anselm R Garbe <[email protected]> | |
| Date: Sun, 19 Oct 2008 12:59:18 +0100 | |
| several changes towards 5.3, XINERAMA is disabled by default, introduced usegra… | |
| Diffstat: | |
| M config.def.h | 2 ++ | |
| M config.mk | 8 ++++---- | |
| M dwm.c | 28 ++++++++++++++++++++-------- | |
| 3 files changed, 26 insertions(+), 12 deletions(-) | |
| --- | |
| diff --git a/config.def.h b/config.def.h | |
| t@@ -13,6 +13,8 @@ static unsigned int snap = 32; /* snap pixe… | |
| static Bool showbar = True; /* False means no bar */ | |
| static Bool topbar = True; /* False means bottom bar */ | |
| static Bool readin = True; /* False means do not read std… | |
| +static Bool usegrab = False; /* True means grabbing the X s… | |
| + during mouse-based resizals… | |
| /* tagging */ | |
| static const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8"… | |
| diff --git a/config.mk b/config.mk | |
| t@@ -1,5 +1,5 @@ | |
| # dwm version | |
| -VERSION = 5.2 | |
| +VERSION = 5.3 | |
| # Customize below to fit your system | |
| t@@ -10,9 +10,9 @@ MANPREFIX = ${PREFIX}/share/man | |
| X11INC = /usr/X11R6/include | |
| X11LIB = /usr/X11R6/lib | |
| -# Xinerama, comment if you don't want it | |
| -XINERAMALIBS = -L${X11LIB} -lXinerama | |
| -XINERAMAFLAGS = -DXINERAMA | |
| +# Xinerama, un-comment if you want it | |
| +#XINERAMALIBS = -L${X11LIB} -lXinerama | |
| +#XINERAMAFLAGS = -DXINERAMA | |
| # includes and libs | |
| INCS = -I. -I/usr/include -I${X11INC} | |
| diff --git a/dwm.c b/dwm.c | |
| t@@ -53,8 +53,8 @@ | |
| #define MIN(a, b) ((a) < (b) ? (a) : (b)) | |
| #define MAXTAGLEN 16 | |
| #define MOUSEMASK (BUTTONMASK|PointerMotionMask) | |
| -#define WIDTH(x) ((x)->w + 2*(x)->bw) | |
| -#define HEIGHT(x) ((x)->h + 2*(x)->bw) | |
| +#define WIDTH(x) ((x)->w + 2 * (x)->bw) | |
| +#define HEIGHT(x) ((x)->h + 2 * (x)->bw) | |
| #define TAGMASK ((int)((1LL << LENGTH(tags)) - 1)) | |
| #define TEXTW(x) (textnw(x, strlen(x)) + dc.font.height) | |
| t@@ -932,7 +932,7 @@ monocle(void) { | |
| Client *c; | |
| for(c = nexttiled(clients); c; c = nexttiled(c->next)) | |
| - resize(c, wx, wy, ww - 2*c->bw, wh - 2*c->bw, resizehints); | |
| + resize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw, resizehints); | |
| } | |
| void | |
| t@@ -952,6 +952,8 @@ movemouse(const Arg *arg) { | |
| None, cursor[CurMove], CurrentTime) != GrabSuccess) | |
| return; | |
| XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui); | |
| + if(usegrab) | |
| + XGrabServer(dpy); | |
| do { | |
| XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMas… | |
| switch (ev.type) { | |
| t@@ -961,7 +963,6 @@ movemouse(const Arg *arg) { | |
| handler[ev.type](&ev); | |
| break; | |
| case MotionNotify: | |
| - XSync(dpy, False); | |
| nx = ocx + (ev.xmotion.x - x); | |
| ny = ocy + (ev.xmotion.y - y); | |
| if(snap && nx >= wx && nx <= wx + ww | |
| t@@ -983,6 +984,8 @@ movemouse(const Arg *arg) { | |
| } | |
| } | |
| while(ev.type != ButtonRelease); | |
| + if(usegrab) | |
| + XUngrabServer(dpy); | |
| XUngrabPointer(dpy, CurrentTime); | |
| } | |
| t@@ -1121,6 +1124,8 @@ resizemouse(const Arg *arg) { | |
| None, cursor[CurResize], CurrentTime) != GrabSuccess) | |
| return; | |
| XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c… | |
| + if(usegrab) | |
| + XGrabServer(dpy); | |
| do { | |
| XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMas… | |
| switch(ev.type) { | |
| t@@ -1130,7 +1135,6 @@ resizemouse(const Arg *arg) { | |
| handler[ev.type](&ev); | |
| break; | |
| case MotionNotify: | |
| - XSync(dpy, False); | |
| nw = MAX(ev.xmotion.x - ocx - 2*c->bw + 1, 1); | |
| nh = MAX(ev.xmotion.y - ocy - 2*c->bw + 1, 1); | |
| t@@ -1146,6 +1150,8 @@ resizemouse(const Arg *arg) { | |
| } | |
| } | |
| while(ev.type != ButtonRelease); | |
| + if(usegrab) | |
| + XUngrabServer(dpy); | |
| XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c… | |
| XUngrabPointer(dpy, CurrentTime); | |
| while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | |
| t@@ -1435,7 +1441,7 @@ tile(void) { | |
| /* master */ | |
| c = nexttiled(clients); | |
| mw = mfact * ww; | |
| - resize(c, wx, wy, (n == 1 ? ww : mw) - 2*c->bw, wh - 2*c->bw, resizehi… | |
| + resize(c, wx, wy, (n == 1 ? ww : mw) - 2 * c->bw, wh - 2 * c->bw, resi… | |
| if(--n == 0) | |
| return; | |
| t@@ -1449,8 +1455,14 @@ tile(void) { | |
| h = wh; | |
| for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { | |
| - resize(c, x, y, w - 2*c->bw, /* remainder */ ((i + 1 == n) | |
| - ? wy + wh - y : h) - 2*c->bw, resizehints); | |
| + if(i + 1 == n) { /* remainder */ | |
| + if(wy + wh - y < bh) | |
| + resize(c, x, y, w - 2 * c->bw, wy + wh - y - 2… | |
| + else | |
| + resize(c, x, y, w - 2 * c->bw, wy + wh - y - 2… | |
| + } | |
| + else | |
| + resize(c, x, y, w - 2 * c->bw, h - 2 * c->bw, resizehi… | |
| if(h != wh) | |
| y = c->y + HEIGHT(c); | |
| } |