|
|
@ -51,7 +51,7 @@
|
|
|
|
#define MOUSEMASK (BUTTONMASK|PointerMotionMask)
|
|
|
|
#define MOUSEMASK (BUTTONMASK|PointerMotionMask)
|
|
|
|
#define WIDTH(X) ((X)->w + 2 * (X)->bw)
|
|
|
|
#define WIDTH(X) ((X)->w + 2 * (X)->bw)
|
|
|
|
#define HEIGHT(X) ((X)->h + 2 * (X)->bw)
|
|
|
|
#define HEIGHT(X) ((X)->h + 2 * (X)->bw)
|
|
|
|
#define TAGMASK ((int)((1LL << LENGTH(tags)) - 1))
|
|
|
|
#define TAGMASK ((int)((1 << LENGTH(tags)) - 1))
|
|
|
|
#define TEXTW(X) (textnw(X, strlen(X)) + dc.font.height)
|
|
|
|
#define TEXTW(X) (textnw(X, strlen(X)) + dc.font.height)
|
|
|
|
|
|
|
|
|
|
|
|
/* enums */
|
|
|
|
/* enums */
|
|
|
@ -271,7 +271,7 @@ static Window root;
|
|
|
|
#include "config.h"
|
|
|
|
#include "config.h"
|
|
|
|
|
|
|
|
|
|
|
|
/* compile-time check if all tags fit into an unsigned int bit array. */
|
|
|
|
/* compile-time check if all tags fit into an unsigned int bit array. */
|
|
|
|
struct NumTags { char limitexceeded[sizeof(unsigned int) * 8 < LENGTH(tags) ? -1 : 1]; };
|
|
|
|
struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
|
|
|
|
|
|
|
|
|
|
|
|
/* function implementations */
|
|
|
|
/* function implementations */
|
|
|
|
void
|
|
|
|
void
|
|
|
@ -420,9 +420,9 @@ buttonpress(XEvent *e) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(ev->window == selmon->barwin) {
|
|
|
|
if(ev->window == selmon->barwin) {
|
|
|
|
i = x = 0;
|
|
|
|
i = x = 0;
|
|
|
|
do
|
|
|
|
do {
|
|
|
|
x += TEXTW(tags[i]);
|
|
|
|
x += TEXTW(tags[i]);
|
|
|
|
while(ev->x >= x && ++i < LENGTH(tags));
|
|
|
|
} while(ev->x >= x && ++i < LENGTH(tags));
|
|
|
|
if(i < LENGTH(tags)) {
|
|
|
|
if(i < LENGTH(tags)) {
|
|
|
|
click = ClkTagBar;
|
|
|
|
click = ClkTagBar;
|
|
|
|
arg.ui = 1 << i;
|
|
|
|
arg.ui = 1 << i;
|
|
|
@ -977,6 +977,7 @@ initfont(const char *fontstr) {
|
|
|
|
XFontSetExtents *font_extents;
|
|
|
|
XFontSetExtents *font_extents;
|
|
|
|
XFontStruct **xfonts;
|
|
|
|
XFontStruct **xfonts;
|
|
|
|
char **font_names;
|
|
|
|
char **font_names;
|
|
|
|
|
|
|
|
|
|
|
|
dc.font.ascent = dc.font.descent = 0;
|
|
|
|
dc.font.ascent = dc.font.descent = 0;
|
|
|
|
font_extents = XExtentsOfFontSet(dc.font.set);
|
|
|
|
font_extents = XExtentsOfFontSet(dc.font.set);
|
|
|
|
n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names);
|
|
|
|
n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names);
|
|
|
@ -1184,8 +1185,7 @@ movemouse(const Arg *arg) {
|
|
|
|
resize(c, nx, ny, c->w, c->h, True);
|
|
|
|
resize(c, nx, ny, c->w, c->h, True);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} while(ev.type != ButtonRelease);
|
|
|
|
while(ev.type != ButtonRelease);
|
|
|
|
|
|
|
|
XUngrabPointer(dpy, CurrentTime);
|
|
|
|
XUngrabPointer(dpy, CurrentTime);
|
|
|
|
if((m = ptrtomon(c->x + c->w / 2, c->y + c->h / 2)) != selmon) {
|
|
|
|
if((m = ptrtomon(c->x + c->w / 2, c->y + c->h / 2)) != selmon) {
|
|
|
|
sendmon(c, m);
|
|
|
|
sendmon(c, m);
|
|
|
@ -1303,8 +1303,7 @@ resizemouse(const Arg *arg) {
|
|
|
|
resize(c, c->x, c->y, nw, nh, True);
|
|
|
|
resize(c, c->x, c->y, nw, nh, True);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} while(ev.type != ButtonRelease);
|
|
|
|
while(ev.type != ButtonRelease);
|
|
|
|
|
|
|
|
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
|
|
|
|
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
|
|
|
|
XUngrabPointer(dpy, CurrentTime);
|
|
|
|
XUngrabPointer(dpy, CurrentTime);
|
|
|
|
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
|
|
|
|
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
|
|
|
@ -1347,7 +1346,7 @@ run(void) {
|
|
|
|
XSync(dpy, False);
|
|
|
|
XSync(dpy, False);
|
|
|
|
while(running && !XNextEvent(dpy, &ev))
|
|
|
|
while(running && !XNextEvent(dpy, &ev))
|
|
|
|
if(handler[ev.type])
|
|
|
|
if(handler[ev.type])
|
|
|
|
(handler[ev.type])(&ev); /* call handler */
|
|
|
|
handler[ev.type](&ev); /* call handler */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
void
|
|
|
|