|
@ -177,7 +177,7 @@ static void focusin(XEvent *e); |
|
|
static void focusmon(const Arg *arg); |
|
|
static void focusmon(const Arg *arg); |
|
|
static void focusstack(const Arg *arg); |
|
|
static void focusstack(const Arg *arg); |
|
|
static unsigned long getcolor(const char *colstr); |
|
|
static unsigned long getcolor(const char *colstr); |
|
|
static Bool getrootpointer(int *x, int *y); |
|
|
|
|
|
|
|
|
static Bool getrootptr(int *x, int *y); |
|
|
static long getstate(Window w); |
|
|
static long getstate(Window w); |
|
|
static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); |
|
|
static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); |
|
|
static void grabbuttons(Client *c, Bool focused); |
|
|
static void grabbuttons(Client *c, Bool focused); |
|
@ -192,7 +192,7 @@ static void maprequest(XEvent *e); |
|
|
static void monocle(Monitor *m); |
|
|
static void monocle(Monitor *m); |
|
|
static void movemouse(const Arg *arg); |
|
|
static void movemouse(const Arg *arg); |
|
|
static Client *nexttiled(Client *c); |
|
|
static Client *nexttiled(Client *c); |
|
|
static Monitor *pointertomon(int x, int y); |
|
|
|
|
|
|
|
|
static Monitor *ptrtomon(int x, int y); |
|
|
static void propertynotify(XEvent *e); |
|
|
static void propertynotify(XEvent *e); |
|
|
static void quit(const Arg *arg); |
|
|
static void quit(const Arg *arg); |
|
|
static void resize(Client *c, int x, int y, int w, int h, Bool interact); |
|
|
static void resize(Client *c, int x, int y, int w, int h, Bool interact); |
|
@ -862,7 +862,7 @@ getcolor(const char *colstr) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Bool |
|
|
Bool |
|
|
getrootpointer(int *x, int *y) { |
|
|
|
|
|
|
|
|
getrootptr(int *x, int *y) { |
|
|
int di; |
|
|
int di; |
|
|
unsigned int dui; |
|
|
unsigned int dui; |
|
|
Window dummy; |
|
|
Window dummy; |
|
@ -1147,7 +1147,7 @@ movemouse(const Arg *arg) { |
|
|
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
|
|
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
|
|
None, cursor[CurMove], CurrentTime) != GrabSuccess) |
|
|
None, cursor[CurMove], CurrentTime) != GrabSuccess) |
|
|
return; |
|
|
return; |
|
|
if(!getrootpointer(&x, &y)) |
|
|
|
|
|
|
|
|
if(!getrootptr(&x, &y)) |
|
|
return; |
|
|
return; |
|
|
do { |
|
|
do { |
|
|
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); |
|
|
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); |
|
@ -1181,7 +1181,7 @@ movemouse(const Arg *arg) { |
|
|
} |
|
|
} |
|
|
while(ev.type != ButtonRelease); |
|
|
while(ev.type != ButtonRelease); |
|
|
XUngrabPointer(dpy, CurrentTime); |
|
|
XUngrabPointer(dpy, CurrentTime); |
|
|
if((m = pointertomon(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); |
|
|
selmon = m; |
|
|
selmon = m; |
|
|
focus(NULL); |
|
|
focus(NULL); |
|
@ -1195,7 +1195,7 @@ nexttiled(Client *c) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Monitor * |
|
|
Monitor * |
|
|
pointertomon(int x, int y) { |
|
|
|
|
|
|
|
|
ptrtomon(int x, int y) { |
|
|
Monitor *m; |
|
|
Monitor *m; |
|
|
|
|
|
|
|
|
for(m = mons; m; m = m->next) |
|
|
for(m = mons; m; m = m->next) |
|
@ -1302,7 +1302,7 @@ resizemouse(const Arg *arg) { |
|
|
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)); |
|
|
if((m = pointertomon(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); |
|
|
selmon = m; |
|
|
selmon = m; |
|
|
focus(NULL); |
|
|
focus(NULL); |
|
@ -1329,6 +1329,7 @@ restack(Monitor *m) { |
|
|
wc.sibling = c->win; |
|
|
wc.sibling = c->win; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
XLowerWindow(dpy, m->barwin); |
|
|
XSync(dpy, False); |
|
|
XSync(dpy, False); |
|
|
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); |
|
|
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); |
|
|
} |
|
|
} |
|
@ -1339,10 +1340,9 @@ run(void) { |
|
|
|
|
|
|
|
|
/* main event loop */ |
|
|
/* main event loop */ |
|
|
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 |
|
@ -1870,8 +1870,8 @@ wintomon(Window w) { |
|
|
Client *c; |
|
|
Client *c; |
|
|
Monitor *m; |
|
|
Monitor *m; |
|
|
|
|
|
|
|
|
if(w == root && getrootpointer(&x, &y)) |
|
|
|
|
|
return pointertomon(x, y); |
|
|
|
|
|
|
|
|
if(w == root && getrootptr(&x, &y)) |
|
|
|
|
|
return ptrtomon(x, y); |
|
|
for(m = mons; m; m = m->next) |
|
|
for(m = mons; m; m = m->next) |
|
|
if(w == m->barwin) |
|
|
if(w == m->barwin) |
|
|
return m; |
|
|
return m; |
|
|