app: gimp_rectangle_tool_auto_shrink(): honor the drawable's offset
This commit is contained in:
@ -2502,8 +2502,6 @@ gimp_rectangle_tool_auto_shrink (GimpRectangleTool *rect_tool)
|
|||||||
GimpRectangleToolPrivate *private = GIMP_RECTANGLE_TOOL_GET_PRIVATE (tool);
|
GimpRectangleToolPrivate *private = GIMP_RECTANGLE_TOOL_GET_PRIVATE (tool);
|
||||||
GimpDisplay *display = tool->display;
|
GimpDisplay *display = tool->display;
|
||||||
GimpImage *image;
|
GimpImage *image;
|
||||||
gint width;
|
|
||||||
gint height;
|
|
||||||
gint offset_x = 0;
|
gint offset_x = 0;
|
||||||
gint offset_y = 0;
|
gint offset_y = 0;
|
||||||
gint x1, y1;
|
gint x1, y1;
|
||||||
@ -2519,17 +2517,32 @@ gimp_rectangle_tool_auto_shrink (GimpRectangleTool *rect_tool)
|
|||||||
|
|
||||||
image = gimp_display_get_image (display);
|
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),
|
g_object_get (gimp_tool_get_options (tool),
|
||||||
"shrink-merged", &shrink_merged,
|
"shrink-merged", &shrink_merged,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
x1 = private->x1 - offset_x > 0 ? private->x1 - offset_x : 0;
|
if (shrink_merged)
|
||||||
x2 = private->x2 - offset_x < width ? private->x2 - offset_x : width;
|
{
|
||||||
y1 = private->y1 - offset_y > 0 ? private->y1 - offset_y : 0;
|
x1 = MAX (private->x1, 0);
|
||||||
y2 = private->y2 - offset_y < height ? private->y2 - offset_y : height;
|
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,
|
if (gimp_image_crop_auto_shrink (image,
|
||||||
x1, y1, x2, y2,
|
x1, y1, x2, y2,
|
||||||
@ -2545,9 +2558,9 @@ gimp_rectangle_tool_auto_shrink (GimpRectangleTool *rect_tool)
|
|||||||
private->function = GIMP_RECTANGLE_TOOL_AUTO_SHRINK;
|
private->function = GIMP_RECTANGLE_TOOL_AUTO_SHRINK;
|
||||||
|
|
||||||
private->x1 = offset_x + shrunk_x1;
|
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->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);
|
gimp_rectangle_tool_update_int_rect (rect_tool);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user