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.

Reply via email to