app: gimp_rectangle_tool_auto_shrink(): honor the drawable's offset

This commit is contained in:
Michael Natterer 2012-01-14 21:28:34 +01:00
parent 23ed56d75d
commit b26216f1d3
1 changed files with 24 additions and 11 deletions

View File

@ -2502,8 +2502,6 @@ gimp_rectangle_tool_auto_shrink (GimpRectangleTool *rect_tool)
GimpRectangleToolPrivate *private = GIMP_RECTANGLE_TOOL_GET_PRIVATE (tool);
GimpDisplay *display = tool->display;
GimpImage *image;
gint width;
gint height;
gint offset_x = 0;
gint offset_y = 0;
gint x1, y1;
@ -2519,17 +2517,32 @@ gimp_rectangle_tool_auto_shrink (GimpRectangleTool *rect_tool)
image = gimp_display_get_image (display);
width = gimp_image_get_width (image);
height = gimp_image_get_height (image);
g_object_get (gimp_tool_get_options (tool),
"shrink-merged", &shrink_merged,
NULL);
x1 = private->x1 - offset_x > 0 ? private->x1 - offset_x : 0;
x2 = private->x2 - offset_x < width ? private->x2 - offset_x : width;
y1 = private->y1 - offset_y > 0 ? private->y1 - offset_y : 0;
y2 = private->y2 - offset_y < height ? private->y2 - offset_y : height;
if (shrink_merged)
{
x1 = MAX (private->x1, 0);
y1 = MAX (private->y1, 0);
x2 = MIN (private->x2, gimp_image_get_width (image));
y2 = MIN (private->y2, gimp_image_get_height (image));
}
else
{
GimpDrawable *drawable = gimp_image_get_active_drawable (image);
GimpItem *item = GIMP_ITEM (drawable);
if (! drawable)
return;
gimp_item_get_offset (item, &offset_x, &offset_y);
x1 = MAX (private->x1 - offset_x, 0);
y1 = MAX (private->y1 - offset_y, 0);
x2 = MIN (private->x2 - offset_x, gimp_item_get_width (item));
y2 = MIN (private->y2 - offset_y, gimp_item_get_height (item));
}
if (gimp_image_crop_auto_shrink (image,
x1, y1, x2, y2,
@ -2545,9 +2558,9 @@ gimp_rectangle_tool_auto_shrink (GimpRectangleTool *rect_tool)
private->function = GIMP_RECTANGLE_TOOL_AUTO_SHRINK;
private->x1 = offset_x + shrunk_x1;
private->y1 = offset_x + shrunk_y1;
private->y1 = offset_y + shrunk_y1;
private->x2 = offset_x + shrunk_x2;
private->y2 = offset_x + shrunk_y2;
private->y2 = offset_y + shrunk_y2;
gimp_rectangle_tool_update_int_rect (rect_tool);