mirror of
https://github.com/0intro/wmii
synced 2025-02-04 16:34:17 +03:00
More move/resize fixes.
This commit is contained in:
parent
51130d46d0
commit
97495656b0
@ -23,40 +23,40 @@ 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 & SOUTH) {
|
||||
if(rect->height + dy >= 0 || *mask & NORTH)
|
||||
rect->height += dy;
|
||||
else {
|
||||
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->width = -dx - rect->width;
|
||||
rect->x -= rect->width;
|
||||
new_mask ^= EAST|WEST;
|
||||
}
|
||||
}
|
||||
if(*mask & WEST) {
|
||||
if(rect->width - dx >= 0 || *mask & EAST) {
|
||||
rect->x += dx;
|
||||
rect->width -= dx;
|
||||
}
|
||||
else {
|
||||
rect->x -= rect->width;
|
||||
rect->x += rect->width;
|
||||
rect->width = dx - rect->width;
|
||||
new_mask ^= EAST|WEST;
|
||||
}
|
||||
}
|
||||
if(*mask & EAST) {
|
||||
if(rect->width + dx >= 0 || *mask & WEST)
|
||||
rect->width += dx;
|
||||
else {
|
||||
rect->x -= rect->width;
|
||||
rect->width = -dx - rect->width;
|
||||
new_mask ^= EAST|WEST;
|
||||
}
|
||||
}
|
||||
if(*mask & SOUTH) {
|
||||
if(rect->height + dy >= 0 || *mask & WEST)
|
||||
rect->height += dy;
|
||||
else {
|
||||
rect->y -= rect->height;
|
||||
rect->height = -dy - rect->height;
|
||||
new_mask ^= NORTH|SOUTH;
|
||||
}
|
||||
}
|
||||
*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;
|
||||
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);
|
||||
|
||||
XWarpPointer(dpy, None, c->framewin, 0, 0, 0, 0, ox, oy);
|
||||
XTranslateCoordinates(dpy, c->framewin, root, ox, oy, &ox, &oy, &dummy);
|
||||
pt.x = ox; pt.y = oy;
|
||||
XSync(dpy, False);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user