diff options
author | okan <okan> | 2011-06-24 06:01:47 +0000 |
---|---|---|
committer | okan <okan> | 2011-06-24 06:01:47 +0000 |
commit | b230e611beebcaab31379f2230b81ab4cf6b890a (patch) | |
tree | 1f5afbe4d8ca8b43eb83932e1c59c94dffb87767 /client.c | |
parent | c566b31bd056677cefe5758095d76eb28c92665e (diff) | |
download | cwm-b230e611beebcaab31379f2230b81ab4cf6b890a.tar.gz cwm-b230e611beebcaab31379f2230b81ab4cf6b890a.tar.xz cwm-b230e611beebcaab31379f2230b81ab4cf6b890a.zip |
re-do various bits of {,h,v}max for simplicity and less flag handling.
as a bonus, flipping between various combinations of vmax+hmax provides a more predictable behavior. commitski oga@
Diffstat (limited to 'client.c')
-rw-r--r-- | client.c | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/client.c b/client.c index de6cb1b..49b16c9 100644 --- a/client.c +++ b/client.c @@ -283,6 +283,8 @@ client_maximize(struct client_ctx *cc) if (cc->flags & CLIENT_MAXIMIZED) { cc->geom = cc->savegeom; + cc->bwidth = Conf.bwidth; + cc->flags &= ~CLIENT_MAXIMIZED; } else { if (!(cc->flags & (CLIENT_VMAXIMIZED | CLIENT_HMAXIMIZED))) cc->savegeom = cc->geom; @@ -308,7 +310,8 @@ calc: cc->geom.y = y_org + sc->gap.top; cc->geom.height = ymax - (sc->gap.top + sc->gap.bottom); cc->geom.width = xmax - (sc->gap.left + sc->gap.right); - cc->flags |= CLIENT_DOMAXIMIZE; + cc->bwidth = 0; + cc->flags |= CLIENT_MAXIMIZED; } client_resize(cc); @@ -324,7 +327,10 @@ client_vertmaximize(struct client_ctx *cc) return; if (cc->flags & CLIENT_VMAXIMIZED) { - cc->geom = cc->savegeom; + cc->geom.y = cc->savegeom.y; + cc->geom.height = cc->savegeom.height; + cc->bwidth = Conf.bwidth; + cc->flags &= ~CLIENT_VMAXIMIZED; } else { if (!(cc->flags & (CLIENT_MAXIMIZED | CLIENT_HMAXIMIZED))) cc->savegeom = cc->geom; @@ -342,7 +348,7 @@ calc: cc->geom.y = y_org + sc->gap.top; cc->geom.height = ymax - (cc->bwidth * 2) - (sc->gap.top + sc->gap.bottom); - cc->flags |= CLIENT_DOVMAXIMIZE; + cc->flags |= CLIENT_VMAXIMIZED; } client_resize(cc); @@ -358,7 +364,10 @@ client_horizmaximize(struct client_ctx *cc) return; if (cc->flags & CLIENT_HMAXIMIZED) { - cc->geom = cc->savegeom; + cc->geom.x = cc->savegeom.x; + cc->geom.width = cc->savegeom.width; + cc->bwidth = Conf.bwidth; + cc->flags &= ~CLIENT_HMAXIMIZED; } else { if (!(cc->flags & (CLIENT_MAXIMIZED | CLIENT_VMAXIMIZED))) cc->savegeom = cc->geom; @@ -376,7 +385,7 @@ calc: cc->geom.x = x_org + sc->gap.left; cc->geom.width = xmax - (cc->bwidth * 2) - (sc->gap.left + sc->gap.right); - cc->flags |= CLIENT_DOHMAXIMIZE; + cc->flags |= CLIENT_HMAXIMIZED; } client_resize(cc); @@ -385,23 +394,6 @@ calc: void client_resize(struct client_ctx *cc) { - cc->flags &= ~(CLIENT_MAXIMIZED | CLIENT_VMAXIMIZED | - CLIENT_HMAXIMIZED); - - if (cc->flags & CLIENT_DOMAXIMIZE) { - cc->bwidth = 0; - cc->flags &= ~CLIENT_DOMAXIMIZE; - cc->flags |= CLIENT_MAXIMIZED; - } else if (cc->flags & CLIENT_DOVMAXIMIZE) { - cc->flags &= ~CLIENT_DOVMAXIMIZE; - cc->flags |= CLIENT_VMAXIMIZED; - } else if (cc->flags & CLIENT_DOHMAXIMIZE) { - cc->flags &= ~CLIENT_DOHMAXIMIZE; - cc->flags |= CLIENT_HMAXIMIZED; - } else { - cc->bwidth = Conf.bwidth; - } - client_draw_border(cc); XMoveResizeWindow(X_Dpy, cc->win, cc->geom.x, @@ -412,11 +404,6 @@ client_resize(struct client_ctx *cc) void client_move(struct client_ctx *cc) { - if (cc->flags & CLIENT_VMAXIMIZED) - cc->savegeom.x = cc->geom.x; - if (cc->flags & CLIENT_HMAXIMIZED) - cc->savegeom.y = cc->geom.y; - XMoveWindow(X_Dpy, cc->win, cc->geom.x, cc->geom.y); xu_configure(cc); } |