1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 20:38:08 +01:00

simplified logic of handleMaximize function

This commit is contained in:
Renan Traba
2013-04-21 15:01:29 -03:00
committed by Carlos R. Mafra
parent f10ec42ba8
commit 33343bcd59

View File

@@ -513,60 +513,26 @@ void handleMaximize(WWindow *wwin, int directions)
wMaximizeWindow(wwin, flags); wMaximizeWindow(wwin, flags);
else else
wUnmaximizeWindow(wwin); wUnmaximizeWindow(wwin);
} /* these alone mean vertical toggle */
else { } else if ((effective == MAX_LEFTHALF) ||
/* MAX_MAXIMUS takes precedence */ (effective == MAX_RIGHTHALF))
effective &= ~MAX_MAXIMUS;
if (requested & MAX_MAXIMUS) {
/* window was previously Maximusized then maximized */
if ((wwin->flags.old_maximized & MAX_MAXIMUS) && !current) {
wUnmaximizeWindow(wwin); wUnmaximizeWindow(wwin);
return; else {
} if ((requested == (MAX_HORIZONTAL | MAX_VERTICAL)) ||
else (requested == MAX_MAXIMUS))
effective = MAX_MAXIMUS;
}
else if (requested == (MAX_HORIZONTAL | MAX_VERTICAL))
effective = requested; effective = requested;
else { else {
/* handle MAX_HORIZONTAL -> MAX_(LEFT|RIGHT)HALF */ if (requested & MAX_LEFTHALF) {
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; effective |= MAX_VERTICAL;
} else { effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF);
/* toggling MAX_VERTICAL */ } else if (requested & MAX_RIGHTHALF) {
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; effective |= MAX_VERTICAL;
effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF);
} }
} effective &= ~MAX_MAXIMUS;
/* toggling MAX_HORIZONTAL */
if ((requested & MAX_HORIZONTAL) &&
(current & MAX_HORIZONTAL))
effective &= ~MAX_HORIZONTAL;
} }
wMaximizeWindow(wwin, effective | flags); wMaximizeWindow(wwin, effective | flags);
} }
return;
} }
/* the window boundary coordinates */ /* the window boundary coordinates */