|
|
|
@ -10,6 +10,19 @@ |
|
|
|
|
|
|
|
|
|
/* static functions */ |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
grabbutton(Client *c, unsigned int button, unsigned int modifier) |
|
|
|
|
{ |
|
|
|
|
XGrabButton(dpy, button, modifier, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, button, modifier | LockMask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, button, modifier | numlockmask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, button, modifier | numlockmask | LockMask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
resizetitle(Client *c) |
|
|
|
|
{ |
|
|
|
@ -31,6 +44,15 @@ resizetitle(Client *c) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
ungrabbutton(Client *c, unsigned int button, unsigned int modifier) |
|
|
|
|
{ |
|
|
|
|
XUngrabButton(dpy, button, modifier, c->win); |
|
|
|
|
XUngrabButton(dpy, button, modifier | LockMask, c->win); |
|
|
|
|
XUngrabButton(dpy, button, modifier | numlockmask, c->win); |
|
|
|
|
XUngrabButton(dpy, button, modifier | numlockmask | LockMask, c->win); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int |
|
|
|
|
xerrordummy(Display *dsply, XErrorEvent *ee) |
|
|
|
|
{ |
|
|
|
@ -53,11 +75,14 @@ focus(Client *c) |
|
|
|
|
|
|
|
|
|
if (!issel) |
|
|
|
|
return; |
|
|
|
|
if(sel && sel->ismax) |
|
|
|
|
if(sel && sel->ismax && sel != c) |
|
|
|
|
togglemax(NULL); |
|
|
|
|
sel = c; |
|
|
|
|
if(old && old != c) |
|
|
|
|
if(old && old != c) { |
|
|
|
|
grabbutton(old, AnyButton, 0); |
|
|
|
|
drawtitle(old); |
|
|
|
|
} |
|
|
|
|
ungrabbutton(c, AnyButton, 0); |
|
|
|
|
drawtitle(c); |
|
|
|
|
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
|
|
|
|
} |
|
|
|
@ -230,32 +255,9 @@ manage(Window w, XWindowAttributes *wa) |
|
|
|
|
c->next = clients; |
|
|
|
|
clients = c; |
|
|
|
|
|
|
|
|
|
XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button1, MODKEY | LockMask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button1, MODKEY | numlockmask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button1, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
|
|
|
|
|
XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button2, MODKEY | LockMask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button2, MODKEY | numlockmask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button2, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
|
|
|
|
|
XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button3, MODKEY | LockMask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button3, MODKEY | numlockmask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
XGrabButton(dpy, Button3, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, |
|
|
|
|
GrabModeAsync, GrabModeSync, None, None); |
|
|
|
|
grabbutton(c, Button1, MODKEY); |
|
|
|
|
grabbutton(c, Button2, MODKEY); |
|
|
|
|
grabbutton(c, Button3, MODKEY); |
|
|
|
|
|
|
|
|
|
settags(c); |
|
|
|
|
if(!c->isfloat) |
|
|
|
|