Bug 722034 - Incorrect snapping behaviour for scale tool
Always snap to the center of transform tool handles.
This commit is contained in:
@ -493,6 +493,21 @@ gimp_canvas_handle_new (GimpDisplayShell *shell,
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_canvas_handle_get_position (GimpCanvasItem *handle,
|
||||||
|
gdouble *x,
|
||||||
|
gdouble *y)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GIMP_IS_CANVAS_HANDLE (handle));
|
||||||
|
g_return_if_fail (x != NULL);
|
||||||
|
g_return_if_fail (y != NULL);
|
||||||
|
|
||||||
|
g_object_get (handle,
|
||||||
|
"x", x,
|
||||||
|
"y", y,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gimp_canvas_handle_set_position (GimpCanvasItem *handle,
|
gimp_canvas_handle_set_position (GimpCanvasItem *handle,
|
||||||
gdouble x,
|
gdouble x,
|
||||||
|
@ -57,9 +57,13 @@ GimpCanvasItem * gimp_canvas_handle_new (GimpDisplayShell *shell,
|
|||||||
gint width,
|
gint width,
|
||||||
gint height);
|
gint height);
|
||||||
|
|
||||||
|
void gimp_canvas_handle_get_position (GimpCanvasItem *handle,
|
||||||
|
gdouble *x,
|
||||||
|
gdouble *y);
|
||||||
void gimp_canvas_handle_set_position (GimpCanvasItem *handle,
|
void gimp_canvas_handle_set_position (GimpCanvasItem *handle,
|
||||||
gdouble x,
|
gdouble x,
|
||||||
gdouble y);
|
gdouble y);
|
||||||
|
|
||||||
void gimp_canvas_handle_set_angles (GimpCanvasItem *handle,
|
void gimp_canvas_handle_set_angles (GimpCanvasItem *handle,
|
||||||
gdouble start_handle,
|
gdouble start_handle,
|
||||||
gdouble slice_handle);
|
gdouble slice_handle);
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
#include "widgets/gimpwidgets-utils.h"
|
#include "widgets/gimpwidgets-utils.h"
|
||||||
|
|
||||||
#include "display/gimpcanvasgroup.h"
|
#include "display/gimpcanvasgroup.h"
|
||||||
|
#include "display/gimpcanvashandle.h"
|
||||||
#include "display/gimpdisplay.h"
|
#include "display/gimpdisplay.h"
|
||||||
#include "display/gimpdisplayshell.h"
|
#include "display/gimpdisplayshell.h"
|
||||||
#include "display/gimpdisplayshell-transform.h"
|
#include "display/gimpdisplayshell-transform.h"
|
||||||
@ -378,6 +379,23 @@ gimp_transform_tool_button_press (GimpTool *tool,
|
|||||||
tr_tool->lasty = tr_tool->mousey = coords->y;
|
tr_tool->lasty = tr_tool->mousey = coords->y;
|
||||||
|
|
||||||
gimp_tool_control_activate (tool->control);
|
gimp_tool_control_activate (tool->control);
|
||||||
|
|
||||||
|
if (GIMP_IS_CANVAS_HANDLE (tr_tool->handles[tr_tool->function]))
|
||||||
|
{
|
||||||
|
gdouble x, y;
|
||||||
|
|
||||||
|
gimp_canvas_handle_get_position (tr_tool->handles[tr_tool->function],
|
||||||
|
&x, &y);
|
||||||
|
|
||||||
|
gimp_tool_control_set_snap_offsets (tool->control,
|
||||||
|
SIGNED_ROUND (x - coords->x),
|
||||||
|
SIGNED_ROUND (y - coords->y),
|
||||||
|
0, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gimp_tool_control_set_snap_offsets (tool->control, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Reference in New Issue
Block a user