wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 97495656b08f04b1d0ed9159cd29a404a8a4e914
parent 51130d46d01aba307a933121a674d48037173fd1
Author: Kris Maglione <bsdaemon@wmii.de>
Date:   Wed, 31 May 2006 13:01:00 -0400

More move/resize fixes.


Diffstat:
cmd/wm/mouse.c | 65+++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 35 insertions(+), 30 deletions(-)

diff --git a/cmd/wm/mouse.c b/cmd/wm/mouse.c @@ -23,38 +23,38 @@ rect_morph_xy(XRectangle *rect, int dx, int dy, BlitzAlign *mask) rect->height -= dy; } else { - rect->y -= rect->height; + rect->y += rect->height; rect->height = dy - rect->height; new_mask ^= NORTH|SOUTH; } } - if(*mask & WEST) { - if(rect->width - dx >= 0 || *mask & EAST) { - rect->x += dx; - rect->width -= dx; - } + if(*mask & SOUTH) { + if(rect->height + dy >= 0 || *mask & NORTH) + rect->height += dy; else { - rect->x -= rect->width; - rect->width = dx - rect->width; - new_mask ^= EAST|WEST; + rect->height = -dy - rect->height; + rect->y -= rect->height; + new_mask ^= NORTH|SOUTH; } } if(*mask & EAST) { if(rect->width + dx >= 0 || *mask & WEST) rect->width += dx; else { - rect->x -= rect->width; rect->width = -dx - rect->width; + rect->x -= rect->width; new_mask ^= EAST|WEST; } } - if(*mask & SOUTH) { - if(rect->height + dy >= 0 || *mask & WEST) - rect->height += dy; + if(*mask & WEST) { + if(rect->width - dx >= 0 || *mask & EAST) { + rect->x += dx; + rect->width -= dx; + } else { - rect->y -= rect->height; - rect->height = -dy - rect->height; - new_mask ^= NORTH|SOUTH; + rect->x += rect->width; + rect->width = dx - rect->width; + new_mask ^= EAST|WEST; } } *mask ^= new_mask; @@ -148,7 +148,7 @@ draw_xor_border(XRectangle *r) void do_mouse_resize(Client *c, BlitzAlign align) { - int px, py, ox, oy; + int px, py, ox, oy, i, di; Window dummy; XEvent ev; unsigned int num = 0; @@ -160,19 +160,24 @@ do_mouse_resize(Client *c, BlitzAlign align) XRectangle origin = frect; XPoint pt; - px = ox = frect.width / 2; - py = oy = frect.height / 2; - if(align&NORTH) - oy -= py; - if(align&SOUTH) - oy += py; - if(align&EAST) - ox += px; - if(align&WEST) - ox -= px; - - XWarpPointer(dpy, None, c->framewin, 0, 0, 0, 0, ox, oy); - XTranslateCoordinates(dpy, c->framewin, root, ox, oy, &ox, &oy, &dummy); + if (!aidx || align != CENTER) { + px = ox = frect.width / 2; + py = oy = frect.height / 2; + if(align&NORTH) + oy -= py; + if(align&SOUTH) + oy += py; + if(align&EAST) + ox += px; + if(align&WEST) + ox -= px; + + XWarpPointer(dpy, None, c->framewin, 0, 0, 0, 0, ox, oy); + XTranslateCoordinates(dpy, c->framewin, root, ox, oy, &ox, &oy, &dummy); + } + else + XQueryPointer(dpy, c->framewin, &dummy, &dummy, &ox, &oy, &i, &i, &di); + pt.x = ox; pt.y = oy; XSync(dpy, False);