dwm

Extremely fast, small, and dynamic window manager for X
git clone git://git.janpasierb.com/dwm.git
Log | Files | Refs | README | LICENSE

commit 2272df9d3179ec639066614f4d36d18df16ff725
parent 08d85d6d66bc4493414d76e470e473fa689c5990
Author: Anselm R.Garbe <arg@10ksloc.org>
Date:   Mon, 21 Aug 2006 09:03:14 +0200

applied Sanders focus_* patches, removed the unnecessary clean-prefix from the new function names

Diffstat:
Mclient.c | 58++++++++++++++++++++++++++++++----------------------------
Mevent.c | 2++
2 files changed, 32 insertions(+), 28 deletions(-)

diff --git a/client.c b/client.c @@ -11,6 +11,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) { int i; @@ -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) diff --git a/event.c b/event.c @@ -119,6 +119,8 @@ buttonpress(XEvent *e) } else if((c = getclient(ev->window))) { focus(c); + if(CLEANMASK(ev->state) == 0) + return; switch(ev->button) { default: break;