[Pkg-wmaker-commits] [wmaker] 19/40: Bugfix for moving windows between heads.
Doug Torrance
dtorrance-guest at moszumanska.debian.org
Sat Mar 11 13:08:18 UTC 2017
This is an automated email from the git hooks/post-receive script.
dtorrance-guest pushed a commit to branch upstream
in repository wmaker.
commit 62d62eebf11f1035bfab4c5b90c514f27c04c139
Author: Roman Dobosz <gryf73 at gmail.com>
Date: Tue Feb 21 18:56:11 2017 +0100
Bugfix for moving windows between heads.
Previous bugfix introduced another regression. It fixed the issue with
size of the unmaximized window, but break new functionality. Revert back
code for maximizing using mouse, leaving out head detection for keyboard
actions, since it is already calculated.
Mouse actions for maximize also has to be fixed due to different
behaviour in original implementation - movement of the window which is
called in handleMaximize filter out MAX_KEYBOARD from argument passed to
the wMaximizeWindow, so that it will always assume that all the actions
have to be done on the head where mouse pointer resides. For moving
windows between heads feature, calculated head is always passed and
used, regardless of how maximizing was invoked (keyboard or mouse) and
mouse pointer position.
---
src/actions.c | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/src/actions.c b/src/actions.c
index a1099a4..119f5ec 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -393,9 +393,14 @@ 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);
+
+ /* In case of mouse initiated maximize, use the head in which pointer is
+ located, rather than window position, which is passed to the function */
+ if (!(directions & MAX_IGNORE_XINERAMA) && !(directions & MAX_KEYBOARD)) {
+ WScreen *scr = wwin->screen_ptr;
+ head = wGetHeadForPointerLocation(scr);
+ }
+
usableArea = wGetUsableAreaForHead(scr, head, &totalArea, True);
/* Only save directions, not kbd or xinerama hints */
@@ -505,7 +510,7 @@ void handleMaximize(WWindow *wwin, int directions)
/* Select windows, which are only horizontally or vertically
* maximized. Quarters cannot be handled here, since there is not
* clear on which direction user intend to move such window. */
- if ((current & MAX_VERTICAL) || (current & MAX_HORIZONTAL)) {
+ if (current & (MAX_VERTICAL | MAX_HORIZONTAL)) {
if (requested & MAX_LEFTHALF && current & MAX_LEFTHALF) {
dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr,
head, DIRECTION_LEFT);
@@ -540,10 +545,15 @@ void handleMaximize(WWindow *wwin, int directions)
effective |= MAX_HORIZONTAL;
effective &= ~(MAX_VERTICAL | MAX_BOTTOMHALF);
}
- } if (dest_head == -1)
- wUnmaximizeWindow(wwin);
+ } if (dest_head != -1)
+ /* tell wMaximizeWindow that we were using keyboard, not
+ * mouse, so that it will use calculated head as
+ * destination for move_half_max_between_heads feature,
+ * not from mouse pointer */
+ wMaximizeWindow(wwin, (effective | flags | MAX_KEYBOARD),
+ dest_head);
else
- wMaximizeWindow(wwin, effective | flags, dest_head);
+ wUnmaximizeWindow(wwin);
} else
wUnmaximizeWindow(wwin);
} else
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmaker.git
More information about the Pkg-wmaker-commits
mailing list