diff options
author | oga <oga> | 2008-06-25 00:52:47 +0000 |
---|---|---|
committer | oga <oga> | 2008-06-25 00:52:47 +0000 |
commit | 187e7dfad2e4cbd46b608b36a8ec654739731edd (patch) | |
tree | aba7eb4b4297ff87a8042ab199ace064665e3833 /kbfunc.c | |
parent | 6f1ed5bfe3c924c603eae6a0f436dcc9494dd5f0 (diff) | |
download | cwm-187e7dfad2e4cbd46b608b36a8ec654739731edd.tar.gz cwm-187e7dfad2e4cbd46b608b36a8ec654739731edd.tar.xz cwm-187e7dfad2e4cbd46b608b36a8ec654739731edd.zip |
Stop keyboard move moving the window utterly off the screen. If that
happens there's no way to get it back. Also, stop resize making a windows size negative or zero. X does not like that one bit. Diff from Martynas. Ok okan@.
Diffstat (limited to 'kbfunc.c')
-rw-r--r-- | kbfunc.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/kbfunc.c b/kbfunc.c index f92efa1..afea8aa 100644 --- a/kbfunc.c +++ b/kbfunc.c @@ -77,7 +77,17 @@ kbfunc_moveresize(struct client_ctx *cc, void *arg) switch (flags & typemask) { case CWM_MOVE: cc->geom.y += my; + if (cc->geom.y + cc->geom.height < 0) + cc->geom.y = -cc->geom.height; + if (cc->geom.y > cc->sc->ymax) + cc->geom.y = cc->sc->ymax; + cc->geom.x += mx; + if (cc->geom.x + cc->geom.width < 0) + cc->geom.x = -cc->geom.width; + if (cc->geom.x > cc->sc->xmax) + cc->geom.x = cc->sc->xmax; + client_move(cc); xu_ptr_getpos(cc->pwin, &x, &y); cc->ptr.y = y + my; @@ -85,8 +95,10 @@ kbfunc_moveresize(struct client_ctx *cc, void *arg) client_ptrwarp(cc); break; case CWM_RESIZE: - cc->geom.height += my; - cc->geom.width += mx; + if ((cc->geom.height += my) < 1) + cc->geom.height = 1; + if ((cc->geom.width += mx) < 1) + cc->geom.width = 1; client_resize(cc); /* Make sure the pointer stays within the window. */ |