From 33343bcd59c5f6e30e4c3ca8776bde2f78894ce0 Mon Sep 17 00:00:00 2001 From: Renan Traba Date: Sun, 21 Apr 2013 15:01:29 -0300 Subject: [PATCH] simplified logic of handleMaximize function --- src/actions.c | 62 ++++++++++++++--------------------------------------------- 1 file changed, 14 insertions(+), 48 deletions(-) diff --git a/src/actions.c b/src/actions.c index 0808e334..fbf8b93c 100644 --- a/src/actions.c +++ b/src/actions.c @@ -509,64 +509,30 @@ void handleMaximize(WWindow *wwin, int directions) if (!effective) { /* allow wMaximizeWindow to restore the Maximusized size */ if ((wwin->flags.old_maximized & MAX_MAXIMUS) && - !(requested & MAX_MAXIMUS)) + !(requested & MAX_MAXIMUS)) wMaximizeWindow(wwin, flags); else wUnmaximizeWindow(wwin); - } + /* these alone mean vertical toggle */ + } else if ((effective == MAX_LEFTHALF) || + (effective == MAX_RIGHTHALF)) + wUnmaximizeWindow(wwin); else { - /* MAX_MAXIMUS takes precedence */ - effective &= ~MAX_MAXIMUS; - if (requested & MAX_MAXIMUS) { - /* window was previously Maximusized then maximized */ - if ((wwin->flags.old_maximized & MAX_MAXIMUS) && !current) { - wUnmaximizeWindow(wwin); - return; - } - else - effective = MAX_MAXIMUS; - } - else if (requested == (MAX_HORIZONTAL | MAX_VERTICAL)) + if ((requested == (MAX_HORIZONTAL | MAX_VERTICAL)) || + (requested == MAX_MAXIMUS)) effective = requested; else { - /* handle MAX_HORIZONTAL -> MAX_(LEFT|RIGHT)HALF */ - if (IS_MAX_HORIZONTALLY(current)) { - if (IS_MAX_HORIZONTALLY(requested)) { - effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF | MAX_RIGHTHALF); - effective |= (requested & (MAX_HORIZONTAL | MAX_LEFTHALF | MAX_RIGHTHALF)); - if (requested & MAX_HORIZONTAL) { - /* restore to half maximization */ - if (wwin->flags.old_maximized & MAX_LEFTHALF) - effective |= MAX_LEFTHALF; - else if (wwin->flags.old_maximized & MAX_RIGHTHALF) - effective |= MAX_RIGHTHALF; - } - /* MAX_VERTICAL is implicit with MAX_(LEFT|RIGHT)HALF */ - else - effective |= MAX_VERTICAL; - } else { - /* toggling MAX_VERTICAL */ - if ((requested & MAX_VERTICAL) && - (current & MAX_VERTICAL)) { - effective &= ~(MAX_LEFTHALF | MAX_RIGHTHALF | MAX_VERTICAL); - } - } - } - /* handle MAX_VERTICAL -> MAX_(LEFT|RIGHT)HALF */ - if (current & MAX_VERTICAL) { - if ((requested & MAX_LEFTHALF) || - (requested & MAX_RIGHTHALF)) { - effective |= MAX_VERTICAL; - } + if (requested & MAX_LEFTHALF) { + effective |= MAX_VERTICAL; + effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF); + } else if (requested & MAX_RIGHTHALF) { + effective |= MAX_VERTICAL; + effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF); } - /* toggling MAX_HORIZONTAL */ - if ((requested & MAX_HORIZONTAL) && - (current & MAX_HORIZONTAL)) - effective &= ~MAX_HORIZONTAL; + effective &= ~MAX_MAXIMUS; } wMaximizeWindow(wwin, effective | flags); } - return; } /* the window boundary coordinates */ -- 2.11.4.GIT