From 58561dc08a93d7d744bc25b019a449e49ea99a91 Mon Sep 17 00:00:00 2001 From: gryf Date: Mon, 16 Jan 2017 19:50:54 +0100 Subject: [PATCH] Fix for unmaximize. New way for traverse windows introduced an regression for maximize toggle from keyboard. Bring the maximize toggle back. --- src/actions.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/actions.c b/src/actions.c index 5ac98c64..0519b32d 100644 --- a/src/actions.c +++ b/src/actions.c @@ -492,33 +492,31 @@ void handleMaximize(WWindow *wwin, int directions) if ((wwin->flags.old_maximized & MAX_MAXIMUS) && !(requested & MAX_MAXIMUS)) wMaximizeWindow(wwin, MAX_MAXIMUS | flags, head); - else { - if (requested & MAX_LEFTHALF && current & MAX_LEFTHALF) { - p.x = wwin->frame_x - 100; - p.y = 0; + else if (requested & MAX_LEFTHALF && current & MAX_LEFTHALF) { + p.x = wwin->frame_x - 100; + p.y = 0; - if (p.x > 0) { - head = wGetHeadForPoint(wwin->screen_ptr, p); - if (head != wGetHeadForWindow(wwin)) { - effective |= MAX_RIGHTHALF; - effective |= MAX_VERTICAL; - effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF); - wMaximizeWindow(wwin, effective | flags, head); - } - } - } - else if (requested & MAX_RIGHTHALF && current & MAX_RIGHTHALF) { - p.x = wwin->frame_x + wwin->frame->core->width + 100; - p.y = 0; + if (p.x > 0) { head = wGetHeadForPoint(wwin->screen_ptr, p); if (head != wGetHeadForWindow(wwin)) { - effective |= MAX_LEFTHALF; - effective |= MAX_VERTICAL; - effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF); + effective |= MAX_RIGHTHALF; + effective |= MAX_VERTICAL; + effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF); wMaximizeWindow(wwin, effective | flags, head); } } - } + } else if (requested & MAX_RIGHTHALF && current & MAX_RIGHTHALF) { + p.x = wwin->frame_x + wwin->frame->core->width + 100; + p.y = 0; + head = wGetHeadForPoint(wwin->screen_ptr, p); + if (head != wGetHeadForWindow(wwin)) { + effective |= MAX_LEFTHALF; + effective |= MAX_VERTICAL; + effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF); + wMaximizeWindow(wwin, effective | flags, head); + } + } else + wUnmaximizeWindow(wwin); /* these alone mean vertical|horizontal toggle */ } else if ((effective == MAX_LEFTHALF) || (effective == MAX_RIGHTHALF) ||