diff options
author | okan | 2012-09-09 19:47:47 +0000 |
---|---|---|
committer | okan | 2012-09-09 19:47:47 +0000 |
commit | 3f39c1ade76f893d54e73fe273041ff90c39d7de (patch) | |
tree | 5979019c722abe491734c43e8bc1a94e91e2fb83 | |
parent | 27c19dc76dec9d1f5bc83b63aac5278b5c5e24c2 (diff) | |
download | cwm-3f39c1ade76f893d54e73fe273041ff90c39d7de.tar.gz |
extend client_resize so that it can know when to reset max flags and
bwidth; this allows a client to be resized from a max state, which now
gets treated like a non-max'd client. based on a diff that does part of
this in a different way from Alexander Polakov.
-rw-r--r-- | calmwm.h | 4 | ||||
-rw-r--r-- | client.c | 15 | ||||
-rw-r--r-- | kbfunc.c | 4 | ||||
-rw-r--r-- | mousefunc.c | 6 |
4 files changed, 17 insertions, 12 deletions
@@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: calmwm.h,v 1.152 2012/07/13 17:01:04 okan Exp $ + * $OpenBSD: calmwm.h,v 1.153 2012/09/09 19:47:47 okan Exp $ */ #ifndef _CALMWM_H_ @@ -327,7 +327,7 @@ struct client_ctx *client_new(Window, struct screen_ctx *, int); void client_ptrsave(struct client_ctx *); void client_ptrwarp(struct client_ctx *); void client_raise(struct client_ctx *); -void client_resize(struct client_ctx *); +void client_resize(struct client_ctx *, int); void client_send_delete(struct client_ctx *); void client_setactive(struct client_ctx *, int); void client_setname(struct client_ctx *); @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: client.c,v 1.100 2012/07/16 01:53:14 okan Exp $ + * $OpenBSD: client.c,v 1.101 2012/09/09 19:47:47 okan Exp $ */ #include <sys/param.h> @@ -306,7 +306,7 @@ client_maximize(struct client_ctx *cc) cc->flags |= CLIENT_MAXIMIZED; resize: - client_resize(cc); + client_resize(cc, 0); } void @@ -355,7 +355,7 @@ client_vertmaximize(struct client_ctx *cc) cc->flags |= CLIENT_VMAXIMIZED; resize: - client_resize(cc); + client_resize(cc, 0); } void @@ -404,12 +404,17 @@ client_horizmaximize(struct client_ctx *cc) cc->flags |= CLIENT_HMAXIMIZED; resize: - client_resize(cc); + client_resize(cc, 0); } void -client_resize(struct client_ctx *cc) +client_resize(struct client_ctx *cc, int reset) { + if (reset) { + cc->flags &= ~CLIENT_MAXIMIZED; + cc->bwidth = Conf.bwidth; + } + client_draw_border(cc); XMoveResizeWindow(X_Dpy, cc->win, cc->geom.x, @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: kbfunc.c,v 1.62 2012/07/13 17:01:04 okan Exp $ + * $OpenBSD: kbfunc.c,v 1.63 2012/09/09 19:47:47 okan Exp $ */ #include <sys/param.h> @@ -117,7 +117,7 @@ kbfunc_moveresize(struct client_ctx *cc, union arg *arg) cc->geom.h = 1; if ((cc->geom.w += mx) < 1) cc->geom.w = 1; - client_resize(cc); + client_resize(cc, 1); /* Make sure the pointer stays within the window. */ xu_ptr_getpos(cc->win, &cc->ptr.x, &cc->ptr.y); diff --git a/mousefunc.c b/mousefunc.c index 4f6ec66..5af8798 100644 --- a/mousefunc.c +++ b/mousefunc.c @@ -16,7 +16,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: mousefunc.c,v 1.37 2012/07/13 17:01:04 okan Exp $ + * $OpenBSD: mousefunc.c,v 1.38 2012/09/09 19:47:47 okan Exp $ */ #include <sys/param.h> @@ -110,12 +110,12 @@ mousefunc_window_resize(struct client_ctx *cc, void *arg) /* don't resize more than 60 times / second */ if ((ev.xmotion.time - ltime) > (1000 / 60)) { ltime = ev.xmotion.time; - client_resize(cc); + client_resize(cc, 1); } break; case ButtonRelease: if (ltime) - client_resize(cc); + client_resize(cc, 1); XUnmapWindow(X_Dpy, sc->menuwin); XReparentWindow(X_Dpy, sc->menuwin, sc->rootwin, 0, 0); xu_ptr_ungrab(); |