1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

dtappbuilder: set limits on the resize rectangle to avoid rollover.

This commit is contained in:
Liang Chang 2021-02-20 22:15:56 +08:00
parent eb83fca4b7
commit 915ba5d5a9

View file

@ -794,51 +794,51 @@ make_rect (
{ {
case NORTH: case NORTH:
new_r->x = r->x; new_r->x = r->x;
new_r->y = y; new_r->y = min(y, rect_bottom(r));
new_r->width = r->width; new_r->width = r->width;
new_r->height = (r->y + r->height) - y; new_r->height = max(0, r->y + r->height - y);
break; break;
case SOUTH: case SOUTH:
new_r->x = r->x; new_r->x = r->x;
new_r->y = r->y; new_r->y = r->y;
new_r->width = r->width; new_r->width = r->width;
new_r->height = y - r->y; new_r->height = max(0, y - r->y);
break; break;
case EAST: case EAST:
new_r->x = r->x; new_r->x = r->x;
new_r->y = r->y; new_r->y = r->y;
new_r->width = x - r->x; new_r->width = max(0, x - r->x);
new_r->height = r->height; new_r->height = r->height;
break; break;
case WEST: case WEST:
new_r->x = x; new_r->x = min(x, rect_right(r));
new_r->y = r->y; new_r->y = r->y;
new_r->width = (r->x + r->width) - x; new_r->width = max(0, r->x + r->width - x);
new_r->height = r->height; new_r->height = r->height;
break; break;
case NORTH_EAST: case NORTH_EAST:
new_r->x = r->x; new_r->x = r->x;
new_r->y = y; new_r->y = min(y, rect_bottom(r));
new_r->width = x - r->x; new_r->width = max(0, x - r->x);
new_r->height = (r->y + r->height) - y; new_r->height = max(0, r->y + r->height - y);
break; break;
case NORTH_WEST: case NORTH_WEST:
new_r->x = x; new_r->x = min(x, rect_right(r));
new_r->y = y; new_r->y = min(y, rect_bottom(r));
new_r->width = (r->x + r->width) - x; new_r->width = max(0, r->x + r->width - x);
new_r->height = (r->y + r->height) - y; new_r->height = max(0, r->y + r->height - y);
break; break;
case SOUTH_EAST: case SOUTH_EAST:
new_r->x = r->x; new_r->x = r->x;
new_r->y = r->y; new_r->y = r->y;
new_r->width = x - r->x; new_r->width = max(0, x - r->x);
new_r->height = y - r->y; new_r->height = max(0, y - r->y);
break; break;
case SOUTH_WEST: case SOUTH_WEST:
new_r->x = x; new_r->x = min(x, rect_right(r));
new_r->y = r->y; new_r->y = r->y;
new_r->width = (r->x + r->width) - x; new_r->width = max(0, r->x + r->width - x);
new_r->height = y - r->y; new_r->height = max(0, y - r->y);
break; break;
} }
} }