From: gryf <gry...@gmail.com> --- NEWS | 24 ++++++++++++------------ WPrefs.app/Expert.c | 2 +- src/actions.c | 26 +++++++++++++++----------- 3 files changed, 28 insertions(+), 24 deletions(-)
diff --git a/NEWS b/NEWS index b407b78..cdb41d5 100644 --- a/NEWS +++ b/NEWS @@ -4,17 +4,6 @@ NEWS for veteran Window Maker users -- 0.95.8 -Snapping a window to the top ----------------------------- - -You can now choose whether snapping a window to the top edge of the screen -maximizes it to the top half (the previous and default behavior) or to the -full screen by setting "SnapToTopMaximizesFullscreen" to "NO" or "YES", -respectively. This setting can also be changed by unchecking or checking -"Snapping a window to the top maximizes it to the full screen" in the -"Expert User Preferences" tab in WPrefs.app. - - Move half-maximized windows between the screens ----------------------------------------------- @@ -97,10 +86,21 @@ on the layout of displays. Note, that only windows that are half-maximized vertically or horizontally can be moved to another screen due to the fact, that direction of movement of quarter-maximized windows is ambiguous. As for vertical/horizontal-maximize, -since doesn't move the window but only strech it vertically/horizontally this +since doesn't move the window but only stretch it vertically/horizontally this feature also doesn't apply. +Snapping a window to the top +---------------------------- + +You can now choose whether snapping a window to the top edge of the screen +maximizes it to the top half (the previous and default behavior) or to the +full screen by setting "SnapToTopMaximizesFullscreen" to "NO" or "YES", +respectively. This setting can also be changed by unchecking or checking +"Snapping a window to the top maximizes it to the full screen" in the +"Expert User Preferences" tab in WPrefs.app. + + -- 0.95.7 Window snapping diff --git a/WPrefs.app/Expert.c b/WPrefs.app/Expert.c index e4c922a..aae55ed 100644 --- a/WPrefs.app/Expert.c +++ b/WPrefs.app/Expert.c @@ -100,7 +100,7 @@ static const struct { { N_("Snapping a window to the top maximizes it to the full screen."), /* default: */ False, OPTION_WMAKER, "SnapToTopMaximizesFullscreen" }, - { N_("Allow move half-maximized windows betweem multiple screens."), + { N_("Allow move half-maximized windows between multiple screens."), /* default: */ False, OPTION_WMAKER, "MoveHalfMaximizedWindowsBetweenScreens" }, { N_("Open dialogs in the same workspace as their owners."), diff --git a/src/actions.c b/src/actions.c index 4a96ce3..a1099a4 100644 --- a/src/actions.c +++ b/src/actions.c @@ -393,6 +393,9 @@ void wMaximizeWindow(WWindow *wwin, int directions, int head) totalArea.y2 = scr->scr_height; totalArea.x1 = 0; totalArea.y1 = 0; + /* ignore provided head information for toggling full maximize/unmaximize */ + if (directions & MAX_KEYBOARD) + head = wGetHeadForWindow(wwin); usableArea = wGetUsableAreaForHead(scr, head, &totalArea, True); /* Only save directions, not kbd or xinerama hints */ @@ -490,6 +493,7 @@ void handleMaximize(WWindow *wwin, int directions) int effective = requested ^ current; int flags = directions & ~requested; int head = wGetHeadForWindow(wwin); + int dest_head = -1; if (!effective) { /* allow wMaximizeWindow to restore the Maximusized size */ @@ -503,43 +507,43 @@ void handleMaximize(WWindow *wwin, int directions) * clear on which direction user intend to move such window. */ if ((current & MAX_VERTICAL) || (current & MAX_HORIZONTAL)) { if (requested & MAX_LEFTHALF && current & MAX_LEFTHALF) { - head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, + dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, DIRECTION_LEFT); - if (head != -1) { + if (dest_head != -1) { effective |= MAX_RIGHTHALF; effective |= MAX_VERTICAL; effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF); } } else if (requested & MAX_RIGHTHALF && current & MAX_RIGHTHALF) { - head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, + dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, DIRECTION_RIGHT); - if (head != -1) { + if (dest_head != -1) { effective |= MAX_LEFTHALF; effective |= MAX_VERTICAL; effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF); } } else if (requested & MAX_TOPHALF && current & MAX_TOPHALF) { - head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, + dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, DIRECTION_UP); - if (head != -1) { + if (dest_head != -1) { effective |= MAX_BOTTOMHALF; effective |= MAX_HORIZONTAL; effective &= ~(MAX_VERTICAL | MAX_TOPHALF); } - } else if (requested & MAX_BOTTOMHALF && + } else if (requested & MAX_BOTTOMHALF && current & MAX_BOTTOMHALF) { - head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, + dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, DIRECTION_DOWN); - if (head != -1) { + if (dest_head != -1) { effective |= MAX_TOPHALF; effective |= MAX_HORIZONTAL; effective &= ~(MAX_VERTICAL | MAX_BOTTOMHALF); } - } if (head == -1) + } if (dest_head == -1) wUnmaximizeWindow(wwin); else - wMaximizeWindow(wwin, effective | flags, head); + wMaximizeWindow(wwin, effective | flags, dest_head); } else wUnmaximizeWindow(wwin); } else -- 2.10.2 -- To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.