- if(abs(wx - nx) < snap)
- nx = wx;
- else if(abs((wx + ww) - (nx + c->w + 2 * c->bw)) < snap)
- nx = wx + ww - c->w - 2 * c->bw;
- if(abs(wy - ny) < snap)
- ny = wy;
- else if(abs((wy + wh) - (ny + c->h + 2 * c->bw)) < snap)
- ny = wy + wh - c->h - 2 * c->bw;
- if(!c->isfloating && lt->arrange && (abs(nx - c->x) > snap || abs(ny - c->y) > snap))
- togglefloating(NULL);
+ if(snap && nx >= wx && nx <= wx + ww
+ && ny >= wy && ny <= wy + wh) {
+ if(abs(wx - nx) < snap)
+ nx = wx;
+ else if(abs((wx + ww) - (nx + c->w + 2 * c->bw)) < snap)
+ nx = wx + ww - c->w - 2 * c->bw;
+ if(abs(wy - ny) < snap)
+ ny = wy;
+ else if(abs((wy + wh) - (ny + c->h + 2 * c->bw)) < snap)
+ ny = wy + wh - c->h - 2 * c->bw;
+ if(!c->isfloating && lt->arrange && (abs(nx - c->x) > snap || abs(ny - c->y) > snap))
+ togglefloating(NULL);
+ }