From cc64e1f3426c8004204e8b547ef3d5ea15a1d03a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Leporcq?= Date: Sun, 8 Dec 2013 21:37:27 +0100 Subject: [PATCH] Fix ToggleMaximize fn when window is solely maximized vertically or horizontally --- src/client.c | 17 +++++++++++------ src/moveresize.c | 4 ++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/client.c b/src/client.c index 4e86808..2eaabb5 100644 --- a/src/client.c +++ b/src/client.c @@ -3063,7 +3063,7 @@ clientNewMaxState (Client *c, XWindowChanges *wc, int mode) * otherwise it's too confusing when the window changes * from horiz to vertical maximization or vice-versa. */ - if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED)) + if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED)) { FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED); wc->x = c->old_x; @@ -3073,6 +3073,16 @@ clientNewMaxState (Client *c, XWindowChanges *wc, int mode) return; } + else if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ)) + { + FLAG_SET (c->flags, CLIENT_FLAG_MAXIMIZED_VERT); + return; + } + else if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT)) + { + FLAG_SET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ); + return; + } } if (FLAG_TEST (mode, CLIENT_FLAG_MAXIMIZED_HORIZ)) @@ -3321,11 +3331,6 @@ clientTile (Client *c, gint cx, gint cy, tilePositionType tile, gboolean send_co break; } - if (!FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED)) - { - clientSaveSizePos (c); - } - old_flags = c->flags; FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED); clientNewMaxState (c, &wc, mode); diff --git a/src/moveresize.c b/src/moveresize.c index ec0e423..aa60262 100644 --- a/src/moveresize.c +++ b/src/moveresize.c @@ -1059,6 +1059,10 @@ clientMoveEventFilter (XEvent * xevent, gpointer data) TRACE ("event loop now finished"); toggled_maximize = FALSE; clientMoveWarp (c, NULL); + if (!FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED)) + { + clientSaveSizePos (c); + } gtk_main_quit (); } -- 2.0.1