diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2016-04-29 14:36:03 +0200 |
---|---|---|
committer | Rémi Verschelde <remi@verschelde.fr> | 2016-04-29 14:36:03 +0200 |
commit | 6d22e03b96b95a07a49d25cf31cd623079ec1e3b (patch) | |
tree | 95df23bbfb0f42f6d93f07d1880c578c030529de | |
parent | db50ccb25ff5bf9e6a05dab11590b62837fb6263 (diff) | |
parent | d82ff4ed0987642087a8148a28c1da7da38606f4 (diff) |
Merge pull request #4485 from bojidar-bg/2d-snap-axis
Allow dragging on only one axis when holding down shift in 2D
-rw-r--r-- | tools/editor/plugins/canvas_item_editor_plugin.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/tools/editor/plugins/canvas_item_editor_plugin.cpp b/tools/editor/plugins/canvas_item_editor_plugin.cpp index 91c26d9d59..31f50b65f5 100644 --- a/tools/editor/plugins/canvas_item_editor_plugin.cpp +++ b/tools/editor/plugins/canvas_item_editor_plugin.cpp @@ -1578,8 +1578,21 @@ void CanvasItemEditor::_viewport_input_event(const InputEvent& p_event) { } + bool uniform = m.mod.shift; + bool symmetric=m.mod.alt; + + dto = dto - (drag == DRAG_ALL ? drag_from - drag_point_from : Vector2(0, 0)); + + if(uniform && drag == DRAG_ALL) { + if(ABS(dto.x - drag_point_from.x) > ABS(dto.y - drag_point_from.y)) { + dto.y = drag_point_from.y; + } else { + dto.x = drag_point_from.x; + } + } + dfrom = drag_point_from; - dto = snap_point(dto - (drag == DRAG_ALL ? drag_from - drag_point_from : Vector2(0, 0)), drag_point_from); + dto = snap_point(dto, drag_point_from); Vector2 drag_vector = canvas_item->get_global_transform_with_canvas().affine_inverse().xform(dto) - @@ -1589,8 +1602,6 @@ void CanvasItemEditor::_viewport_input_event(const InputEvent& p_event) { Vector2 begin=local_rect.pos; Vector2 end=local_rect.pos+local_rect.size; Vector2 minsize = canvas_item->edit_get_minimum_size(); - bool uniform = m.mod.shift; - bool symmetric=m.mod.alt; if (uniform) { float aspect = local_rect.size.get_aspect(); |