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
|
-- 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
|
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
|
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
|
be moved to another screen due to the fact, that direction of movement of
|
||||||
quarter-maximized windows is ambiguous. As for vertical/horizontal-maximize,
|
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.
|
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
|
-- 0.95.7
|
||||||
|
|
||||||
Window snapping
|
Window snapping
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ static const struct {
|
|||||||
{ N_("Snapping a window to the top maximizes it to the full screen."),
|
{ N_("Snapping a window to the top maximizes it to the full screen."),
|
||||||
/* default: */ False, OPTION_WMAKER, "SnapToTopMaximizesFullscreen" },
|
/* 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" },
|
/* default: */ False, OPTION_WMAKER, "MoveHalfMaximizedWindowsBetweenScreens" },
|
||||||
|
|
||||||
{ N_("Open dialogs in the same workspace as their owners."),
|
{ 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.y2 = scr->scr_height;
|
||||||
totalArea.x1 = 0;
|
totalArea.x1 = 0;
|
||||||
totalArea.y1 = 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);
|
usableArea = wGetUsableAreaForHead(scr, head, &totalArea, True);
|
||||||
|
|
||||||
/* Only save directions, not kbd or xinerama hints */
|
/* Only save directions, not kbd or xinerama hints */
|
||||||
@@ -490,6 +493,7 @@ void handleMaximize(WWindow *wwin, int directions)
|
|||||||
int effective = requested ^ current;
|
int effective = requested ^ current;
|
||||||
int flags = directions & ~requested;
|
int flags = directions & ~requested;
|
||||||
int head = wGetHeadForWindow(wwin);
|
int head = wGetHeadForWindow(wwin);
|
||||||
|
int dest_head = -1;
|
||||||
|
|
||||||
if (!effective) {
|
if (!effective) {
|
||||||
/* allow wMaximizeWindow to restore the Maximusized size */
|
/* 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. */
|
* clear on which direction user intend to move such window. */
|
||||||
if ((current & MAX_VERTICAL) || (current & MAX_HORIZONTAL)) {
|
if ((current & MAX_VERTICAL) || (current & MAX_HORIZONTAL)) {
|
||||||
if (requested & MAX_LEFTHALF && current & MAX_LEFTHALF) {
|
if (requested & MAX_LEFTHALF && current & MAX_LEFTHALF) {
|
||||||
head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
|
dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
|
||||||
head, DIRECTION_LEFT);
|
head, DIRECTION_LEFT);
|
||||||
if (head != -1) {
|
if (dest_head != -1) {
|
||||||
effective |= MAX_RIGHTHALF;
|
effective |= MAX_RIGHTHALF;
|
||||||
effective |= MAX_VERTICAL;
|
effective |= MAX_VERTICAL;
|
||||||
effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF);
|
effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF);
|
||||||
}
|
}
|
||||||
} else if (requested & MAX_RIGHTHALF &&
|
} else if (requested & MAX_RIGHTHALF &&
|
||||||
current & MAX_RIGHTHALF) {
|
current & MAX_RIGHTHALF) {
|
||||||
head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
|
dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
|
||||||
head, DIRECTION_RIGHT);
|
head, DIRECTION_RIGHT);
|
||||||
if (head != -1) {
|
if (dest_head != -1) {
|
||||||
effective |= MAX_LEFTHALF;
|
effective |= MAX_LEFTHALF;
|
||||||
effective |= MAX_VERTICAL;
|
effective |= MAX_VERTICAL;
|
||||||
effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF);
|
effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF);
|
||||||
}
|
}
|
||||||
} else if (requested & MAX_TOPHALF && current & MAX_TOPHALF) {
|
} else if (requested & MAX_TOPHALF && current & MAX_TOPHALF) {
|
||||||
head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
|
dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
|
||||||
head, DIRECTION_UP);
|
head, DIRECTION_UP);
|
||||||
if (head != -1) {
|
if (dest_head != -1) {
|
||||||
effective |= MAX_BOTTOMHALF;
|
effective |= MAX_BOTTOMHALF;
|
||||||
effective |= MAX_HORIZONTAL;
|
effective |= MAX_HORIZONTAL;
|
||||||
effective &= ~(MAX_VERTICAL | MAX_TOPHALF);
|
effective &= ~(MAX_VERTICAL | MAX_TOPHALF);
|
||||||
}
|
}
|
||||||
} else if (requested & MAX_BOTTOMHALF &&
|
} else if (requested & MAX_BOTTOMHALF &&
|
||||||
current & MAX_BOTTOMHALF) {
|
current & MAX_BOTTOMHALF) {
|
||||||
head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
|
dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
|
||||||
head, DIRECTION_DOWN);
|
head, DIRECTION_DOWN);
|
||||||
if (head != -1) {
|
if (dest_head != -1) {
|
||||||
effective |= MAX_TOPHALF;
|
effective |= MAX_TOPHALF;
|
||||||
effective |= MAX_HORIZONTAL;
|
effective |= MAX_HORIZONTAL;
|
||||||
effective &= ~(MAX_VERTICAL | MAX_BOTTOMHALF);
|
effective &= ~(MAX_VERTICAL | MAX_BOTTOMHALF);
|
||||||
}
|
}
|
||||||
} if (head == -1)
|
} if (dest_head == -1)
|
||||||
wUnmaximizeWindow(wwin);
|
wUnmaximizeWindow(wwin);
|
||||||
else
|
else
|
||||||
wMaximizeWindow(wwin, effective | flags, head);
|
wMaximizeWindow(wwin, effective | flags, dest_head);
|
||||||
} else
|
} else
|
||||||
wUnmaximizeWindow(wwin);
|
wUnmaximizeWindow(wwin);
|
||||||
} else
|
} else
|
||||||
|
|||||||
Reference in New Issue
Block a user