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

wmaker: Add "unmaximize on move" feature.

This patch adds the ability to completely unmaximize, i.e., clear the maximized
flag and return to the original geometry, a maximized window that is moved.
This behavior mirrors that of other common desktop enviroments, e.g., GNOME,
Unity, and Windows.

To enable this feature, set "UnmaximizeOnMove = YES" in
~/GNUstep/Defaults/WindowMaker.

Signed-off-by: Carlos R. Mafra <crmafra@gmail.com>
This commit is contained in:
Doug Torrance
2014-09-21 08:36:52 -05:00
committed by Carlos R. Mafra
parent 38b58112ac
commit 12fa7b2203
3 changed files with 19 additions and 2 deletions

View File

@@ -353,6 +353,7 @@ extern struct WPreferences {
char no_animations; /* enable/disable animations */ char no_animations; /* enable/disable animations */
char no_autowrap; /* wrap workspace when window is moved to the edge */ char no_autowrap; /* wrap workspace when window is moved to the edge */
char window_snapping; /* enable window snapping */ char window_snapping; /* enable window snapping */
char unmaximize_on_move; /* unmaximize a maximized window when it is moved */
char highlight_active_app; /* show the focused app by highlighting its icon */ char highlight_active_app; /* show the focused app by highlighting its icon */
char auto_arrange_icons; /* automagically arrange icons */ char auto_arrange_icons; /* automagically arrange icons */

View File

@@ -452,6 +452,8 @@ WDefaultEntry optionList[] = {
&wPreferences.no_autowrap, getBool, NULL, NULL, NULL}, &wPreferences.no_autowrap, getBool, NULL, NULL, NULL},
{"WindowSnapping", "NO", NULL, {"WindowSnapping", "NO", NULL,
&wPreferences.window_snapping, getBool, NULL, NULL, NULL}, &wPreferences.window_snapping, getBool, NULL, NULL, NULL},
{"UnmaximizeOnMove", "NO", NULL,
&wPreferences.unmaximize_on_move, getBool, NULL, NULL, NULL},
{"HighlightActiveApp", "YES", NULL, {"HighlightActiveApp", "YES", NULL,
&wPreferences.highlight_active_app, getBool, NULL, NULL, NULL}, &wPreferences.highlight_active_app, getBool, NULL, NULL, NULL},
{"AutoArrangeIcons", "NO", NULL, {"AutoArrangeIcons", "NO", NULL,

View File

@@ -1724,9 +1724,23 @@ int wMouseMoveWindow(WWindow * wwin, XEvent * ev)
|| abs(ev->xmotion.y_root - event.xmotion.y_root) >= MOVE_THRESHOLD) { || abs(ev->xmotion.y_root - event.xmotion.y_root) >= MOVE_THRESHOLD) {
if (wwin->flags.maximized) { if (wwin->flags.maximized) {
if (wPreferences.unmaximize_on_move) {
float titlebar_ratio;
int new_x, new_y;
titlebar_ratio = (moveData.mouseX - wwin->frame_x) /
(float)wwin->frame->core->width;
new_y = wwin->frame_y;
wUnmaximizeWindow(wwin);
new_x = moveData.mouseX - titlebar_ratio * wwin->frame->core->width;
wWindowMove(wwin, new_x, new_y);
moveData.realX = moveData.calcX = wwin->frame_x;
moveData.realY = moveData.calcY = wwin->frame_y;
} else {
wwin->flags.maximized = 0; wwin->flags.maximized = 0;
wwin->flags.old_maximized = 0; wwin->flags.old_maximized = 0;
} }
}
XChangeActivePointerGrab(dpy, ButtonMotionMask XChangeActivePointerGrab(dpy, ButtonMotionMask
| ButtonReleaseMask | ButtonPressMask, | ButtonReleaseMask | ButtonPressMask,