X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=event.c;h=d0f446f7837466071f8e8b8432fee56ff60eb650;hb=b6614261ea48c9711cefd79601e09fa764ee3075;hp=e95991738919768a00d8664333bf47d7972e8ef3;hpb=6651dd7fd9e8e95cfc6c472f1adfeff41735d798;p=dwm.git diff --git a/event.c b/event.c index e959917..d0f446f 100644 --- a/event.c +++ b/event.c @@ -18,6 +18,7 @@ typedef struct { KEYS #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) +#define MOUSEMASK (BUTTONMASK | PointerMotionMask) static void movemouse(Client *c) { @@ -47,6 +48,14 @@ movemouse(Client *c) { XSync(dpy, False); c->x = ocx + (ev.xmotion.x - x1); c->y = ocy + (ev.xmotion.y - y1); + if(abs(c->x) < sx + SNAP) + c->x = sx; + if(abs(c->y) < sy + bh + SNAP) + c->y = sy + bh; + if(abs(c->x + c->w) > sx + sw - SNAP) + c->x = sw - c->w - 2 * BORDERPX; + if(abs(c->y + c->h) > sy + sh - SNAP) + c->y = sh - c->h - 2 * BORDERPX; resize(c, False, TopLeft); break; } @@ -135,7 +144,8 @@ buttonpress(XEvent *e) { } else if(ev->button == Button2) zoom(NULL); - else if(ev->button == Button3 && (arrange == dofloat || c->isfloat)) { + else if(ev->button == Button3 && (arrange == dofloat || c->isfloat) && + !c->isfixed) { restack(); resizemouse(c); } @@ -179,7 +189,7 @@ configurerequest(XEvent *e) { ban(c); } else - arrange(NULL); + arrange(); } else { wc.x = ev->x; @@ -304,7 +314,7 @@ propertynotify(XEvent *e) { case XA_WM_TRANSIENT_FOR: XGetTransientForHint(dpy, c->win, &trans); if(!c->isfloat && (c->isfloat = (trans != 0))) - arrange(NULL); + arrange(); break; case XA_WM_NORMAL_HINTS: updatesize(c);