mirror of https://github.com/GNOME/gimp.git
don't modify the rectangle while moving, and stick to edges when going out
2005-09-13 Karine Delvare <kdelvare@nerim.net> * app/tools/gimprectangletool.c: don't modify the rectangle while moving, and stick to edges when going out of image boundaries.
This commit is contained in:
parent
f3d9a51e18
commit
9c3bc6f64b
|
@ -1,3 +1,8 @@
|
||||||
|
2005-09-13 Karine Delvare <kdelvare@nerim.net>
|
||||||
|
|
||||||
|
* app/tools/gimprectangletool.c: don't modify the rectangle while
|
||||||
|
moving, and stick to edges when going out of image boundaries.
|
||||||
|
|
||||||
2005-09-13 Sven Neumann <sven@gimp.org>
|
2005-09-13 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
* app/actions/edit-actions.c: use "Undo History" instead of "Undo
|
* app/actions/edit-actions.c: use "Undo History" instead of "Undo
|
||||||
|
|
|
@ -156,26 +156,26 @@ gimp_rectangle_tool_iface_base_init (GimpRectangleToolInterface *tool_iface)
|
||||||
g_object_interface_install_property (tool_iface,
|
g_object_interface_install_property (tool_iface,
|
||||||
g_param_spec_int ("startx",
|
g_param_spec_int ("startx",
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
0, GIMP_MAX_IMAGE_SIZE,
|
-GIMP_MAX_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE,
|
||||||
0,
|
0,
|
||||||
G_PARAM_READWRITE));
|
G_PARAM_READWRITE));
|
||||||
g_object_interface_install_property (tool_iface,
|
g_object_interface_install_property (tool_iface,
|
||||||
g_param_spec_int ("starty",
|
g_param_spec_int ("starty",
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
0, GIMP_MAX_IMAGE_SIZE,
|
-GIMP_MAX_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE,
|
||||||
0,
|
0,
|
||||||
G_PARAM_READWRITE));
|
G_PARAM_READWRITE));
|
||||||
|
|
||||||
g_object_interface_install_property (tool_iface,
|
g_object_interface_install_property (tool_iface,
|
||||||
g_param_spec_int ("lastx",
|
g_param_spec_int ("lastx",
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
0, GIMP_MAX_IMAGE_SIZE,
|
-GIMP_MAX_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE,
|
||||||
0,
|
0,
|
||||||
G_PARAM_READWRITE));
|
G_PARAM_READWRITE));
|
||||||
g_object_interface_install_property (tool_iface,
|
g_object_interface_install_property (tool_iface,
|
||||||
g_param_spec_int ("lasty",
|
g_param_spec_int ("lasty",
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
0, GIMP_MAX_IMAGE_SIZE,
|
-GIMP_MAX_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE,
|
||||||
0,
|
0,
|
||||||
G_PARAM_READWRITE));
|
G_PARAM_READWRITE));
|
||||||
|
|
||||||
|
@ -1453,7 +1453,10 @@ gimp_rectangle_tool_motion (GimpTool *tool,
|
||||||
case RECT_RESIZING_UPPER_LEFT:
|
case RECT_RESIZING_UPPER_LEFT:
|
||||||
case RECT_RESIZING_LOWER_LEFT:
|
case RECT_RESIZING_LOWER_LEFT:
|
||||||
case RECT_RESIZING_LEFT:
|
case RECT_RESIZING_LEFT:
|
||||||
x1 = rx1 + inc_x;
|
if (x1 < 0 && x1 + inc_x < 0)
|
||||||
|
x1 = 0;
|
||||||
|
else
|
||||||
|
x1 = rx1 + inc_x;
|
||||||
if (fixed_width)
|
if (fixed_width)
|
||||||
{
|
{
|
||||||
x2 = x1 + width;
|
x2 = x1 + width;
|
||||||
|
@ -1494,7 +1497,10 @@ gimp_rectangle_tool_motion (GimpTool *tool,
|
||||||
case RECT_RESIZING_UPPER_RIGHT:
|
case RECT_RESIZING_UPPER_RIGHT:
|
||||||
case RECT_RESIZING_LOWER_RIGHT:
|
case RECT_RESIZING_LOWER_RIGHT:
|
||||||
case RECT_RESIZING_RIGHT:
|
case RECT_RESIZING_RIGHT:
|
||||||
x2 = rx2 + inc_x;
|
if (x2 > max_x && x2 + inc_x > max_x)
|
||||||
|
x2 = max_x;
|
||||||
|
else
|
||||||
|
x2 = rx2 + inc_x;
|
||||||
if (fixed_width)
|
if (fixed_width)
|
||||||
{
|
{
|
||||||
x1 = x2 - width;
|
x1 = x2 - width;
|
||||||
|
@ -1540,8 +1546,20 @@ gimp_rectangle_tool_motion (GimpTool *tool,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RECT_MOVING:
|
case RECT_MOVING:
|
||||||
if (rx1 + inc_x < 0 ||
|
// are we getting out of the image?
|
||||||
rx2 + inc_x > max_x)
|
if (rx1 + inc_x < 0)
|
||||||
|
{
|
||||||
|
x1 = 0;
|
||||||
|
x2 = rx2 - rx1;
|
||||||
|
}
|
||||||
|
else if (rx2 + inc_x > max_x)
|
||||||
|
{
|
||||||
|
x1 = rx1 + max_x - rx2;
|
||||||
|
x2 = max_x;
|
||||||
|
}
|
||||||
|
// are we staying out of the image?
|
||||||
|
else if ((x1 < 0 && x1 + inc_x < 0) ||
|
||||||
|
(x2 > max_x && x2 + inc_x > max_x))
|
||||||
{
|
{
|
||||||
x1 = rx1;
|
x1 = rx1;
|
||||||
x2 = rx2;
|
x2 = rx2;
|
||||||
|
@ -1551,6 +1569,7 @@ gimp_rectangle_tool_motion (GimpTool *tool,
|
||||||
x1 = rx1 + inc_x;
|
x1 = rx1 + inc_x;
|
||||||
x2 = rx2 + inc_x;
|
x2 = rx2 + inc_x;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_set (rectangle, "startx", curx, NULL);
|
g_object_set (rectangle, "startx", curx, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1567,7 +1586,10 @@ gimp_rectangle_tool_motion (GimpTool *tool,
|
||||||
case RECT_RESIZING_UPPER_LEFT:
|
case RECT_RESIZING_UPPER_LEFT:
|
||||||
case RECT_RESIZING_UPPER_RIGHT:
|
case RECT_RESIZING_UPPER_RIGHT:
|
||||||
case RECT_RESIZING_TOP:
|
case RECT_RESIZING_TOP:
|
||||||
y1 = ry1 + inc_y;
|
if (y1 < 0 && y1 + inc_y < 0)
|
||||||
|
y1 = 0;
|
||||||
|
else
|
||||||
|
y1 = ry1 + inc_y;
|
||||||
if (fixed_height)
|
if (fixed_height)
|
||||||
{
|
{
|
||||||
y2 = y1 + height;
|
y2 = y1 + height;
|
||||||
|
@ -1608,7 +1630,10 @@ gimp_rectangle_tool_motion (GimpTool *tool,
|
||||||
case RECT_RESIZING_LOWER_LEFT:
|
case RECT_RESIZING_LOWER_LEFT:
|
||||||
case RECT_RESIZING_LOWER_RIGHT:
|
case RECT_RESIZING_LOWER_RIGHT:
|
||||||
case RECT_RESIZING_BOTTOM:
|
case RECT_RESIZING_BOTTOM:
|
||||||
y2 = ry2 + inc_y;
|
if (y2 > max_y && y2 + inc_y > max_y)
|
||||||
|
y2 = max_y;
|
||||||
|
else
|
||||||
|
y2 = ry2 + inc_y;
|
||||||
if (fixed_height)
|
if (fixed_height)
|
||||||
{
|
{
|
||||||
y1 = y2 - height;
|
y1 = y2 - height;
|
||||||
|
@ -1654,8 +1679,20 @@ gimp_rectangle_tool_motion (GimpTool *tool,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RECT_MOVING:
|
case RECT_MOVING:
|
||||||
if (ry1 + inc_y < 0 ||
|
// are we getting out of the image?
|
||||||
ry2 + inc_y > max_y)
|
if (ry1 + inc_y < 0)
|
||||||
|
{
|
||||||
|
y1 = 0;
|
||||||
|
y2 = ry2 - ry1;
|
||||||
|
}
|
||||||
|
else if (ry2 + inc_y > max_y)
|
||||||
|
{
|
||||||
|
y1 = ry1 + max_y - ry2;
|
||||||
|
y2 = max_y;
|
||||||
|
}
|
||||||
|
// are we staying out of the image?
|
||||||
|
else if ((y1 < 0 && y1 + inc_y < 0) ||
|
||||||
|
(y2 > max_y && y2 + inc_y > max_y))
|
||||||
{
|
{
|
||||||
y1 = ry1;
|
y1 = ry1;
|
||||||
y2 = ry2;
|
y2 = ry2;
|
||||||
|
@ -1665,6 +1702,7 @@ gimp_rectangle_tool_motion (GimpTool *tool,
|
||||||
y1 = ry1 + inc_y;
|
y1 = ry1 + inc_y;
|
||||||
y2 = ry2 + inc_y;
|
y2 = ry2 + inc_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_set (rectangle, "starty", cury, NULL);
|
g_object_set (rectangle, "starty", cury, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue