mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 04:20:27 +01:00
Fixed wrong (re)stored dimensions for unmaximized window.
This commit is contained in:
24
NEWS
24
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
|
||||
|
||||
@@ -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."),
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user