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

Clean up maximization and un-maximization logic

We should not try to un-maximize the windows from inside
the function wMaximizeWindow(), as that makes no sense.

If the window is already maximized then we don't call
wMaximizeWindow() anymore and call wUnmaximizeWindow()
instead, which will use the old geometry regardless
of which maximization is active (horizontal, vertical,
maximus, etc). And the old geometry now is also saved
when we enter wMaximizeWindow().

So when we call wMaximizeWindow() or wUnmaximizeWindow()
we really mean "maximize to the specified state" or
"go back to whatever old geometry coordinates we had before".
This commit is contained in:
Carlos R. Mafra
2009-09-01 03:22:57 +02:00
parent cf62d1591f
commit c04a2caeab
2 changed files with 39 additions and 74 deletions

View File

@@ -1434,80 +1434,62 @@ static void handleKeyPress(XEvent * event)
break;
case WKBD_MAXIMIZE:
if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) {
int newdir = (MAX_VERTICAL | MAX_HORIZONTAL);
CloseWindowMenu(scr);
if (wwin->flags.maximized == newdir) {
if (wwin->flags.maximized == (MAX_VERTICAL | MAX_HORIZONTAL))
wUnmaximizeWindow(wwin);
} else {
wMaximizeWindow(wwin, newdir | MAX_KEYBOARD);
}
else
wMaximizeWindow(wwin, MAX_VERTICAL | MAX_HORIZONTAL | MAX_KEYBOARD);
}
break;
case WKBD_VMAXIMIZE:
if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) {
int newdir = (MAX_VERTICAL ^ wwin->flags.maximized);
CloseWindowMenu(scr);
if (newdir) {
wMaximizeWindow(wwin, newdir | MAX_KEYBOARD);
} else {
if (wwin->flags.maximized == MAX_VERTICAL)
wUnmaximizeWindow(wwin);
}
else
wMaximizeWindow(wwin, MAX_VERTICAL | MAX_KEYBOARD);
}
break;
case WKBD_HMAXIMIZE:
if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) {
int newdir = (MAX_HORIZONTAL ^ wwin->flags.maximized);
CloseWindowMenu(scr);
if (newdir) {
wMaximizeWindow(wwin, newdir | MAX_KEYBOARD);
} else {
if (wwin->flags.maximized == MAX_HORIZONTAL)
wUnmaximizeWindow(wwin);
}
else
wMaximizeWindow(wwin, MAX_HORIZONTAL | MAX_KEYBOARD);
}
break;
case WKBD_LHMAXIMIZE:
if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) {
int newdir = (MAX_VERTICAL|MAX_LEFTHALF);
CloseWindowMenu(scr);
if (wwin->flags.maximized == newdir) {
if (wwin->flags.maximized == MAX_VERTICAL | MAX_LEFTHALF)
wUnmaximizeWindow(wwin);
} else {
wMaximizeWindow(wwin, newdir|MAX_KEYBOARD);
}
else
wMaximizeWindow(wwin, MAX_VERTICAL | MAX_LEFTHALF | MAX_KEYBOARD);
}
break;
case WKBD_RHMAXIMIZE:
if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) {
int newdir = (MAX_VERTICAL|MAX_RIGHTHALF);
CloseWindowMenu(scr);
if (wwin->flags.maximized == newdir) {
if (wwin->flags.maximized == MAX_VERTICAL | MAX_RIGHTHALF)
wUnmaximizeWindow(wwin);
} else {
wMaximizeWindow(wwin, newdir|MAX_KEYBOARD);
}
else
wMaximizeWindow(wwin, MAX_VERTICAL | MAX_RIGHTHALF | MAX_KEYBOARD);
}
break;
case WKBD_MAXIMUS:
if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) {
int newdir = MAX_MAXIMUS;
CloseWindowMenu(scr);
if (wwin->flags.maximized == newdir) {
if (wwin->flags.maximized == MAX_MAXIMUS)
wUnmaximizeWindow(wwin);
} else {
wMaximizeWindow(wwin, newdir|MAX_KEYBOARD);
}
else
wMaximizeWindow(wwin, MAX_MAXIMUS | MAX_KEYBOARD);
}
break;
case WKBD_RAISE: