From 6d99de883c18b0029addc0da88c9b1802dae780f Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Tue, 3 Aug 2010 02:03:01 +0200 Subject: [PATCH] Layout: Fix toggle maximization in free layout --- src/client.c | 19 ++++++++----------- src/layout.c | 2 +- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/client.c b/src/client.c index 8bc2900..b251c8a 100644 --- a/src/client.c +++ b/src/client.c @@ -828,11 +828,10 @@ client_moveresize(Client *c, XRectangle geo, Bool r) c->flags &= ~FLayFlag; } - c->geo = c->ogeo = geo; + c->geo = geo; - if(c->flags & FreeFlag || tags[c->screen][c->tag].layout.func == freelayout - || conf.keep_layout_geo) - c->free_geo = geo; + if(c->flags & FreeFlag || !(c->flags & (TileFlag | LMaxFlag)) || conf.keep_layout_geo) + c->free_geo = c->geo; if((c->screen = screen_get_with_geo(c->geo.x, c->geo.y)) != os && c->tag != MAXTAG + 1) @@ -854,19 +853,17 @@ client_moveresize(Client *c, XRectangle geo, Bool r) void client_maximize(Client *c) { - XRectangle geo; - if(!c || c->flags & FSSFlag) return; c->screen = screen_get_with_geo(c->geo.x, c->geo.y); - geo.x = sgeo[c->screen].x; - geo.y = sgeo[c->screen].y; - geo.width = sgeo[c->screen].width - BORDH * 2; - geo.height = sgeo[c->screen].height - BORDH; + c->geo.x = sgeo[c->screen].x; + c->geo.y = sgeo[c->screen].y; + c->geo.width = sgeo[c->screen].width - BORDH * 2; + c->geo.height = sgeo[c->screen].height - BORDH; - client_moveresize(c, geo, False); + client_moveresize(c, c->geo, False); return; } diff --git a/src/layout.c b/src/layout.c index 93e08d3..536c239 100644 --- a/src/layout.c +++ b/src/layout.c @@ -846,7 +846,7 @@ uicb_togglemax(uicb_t cmd) } else { - sel->geo = sel->free_geo; + sel->geo = sel->ogeo; client_moveresize(sel, sel->geo, True); sel->flags &= ~MaxFlag; tags[selscreen][seltag[selscreen]].layout.func(selscreen);