summaryrefslogtreecommitdiff
path: root/tools/editor/plugins
diff options
context:
space:
mode:
authorBojidar Marinov <bojidar.marinov.bg@gmail.com>2016-04-29 15:06:29 +0300
committerBojidar Marinov <bojidar.marinov.bg@gmail.com>2016-04-29 15:06:29 +0300
commitd82ff4ed0987642087a8148a28c1da7da38606f4 (patch)
tree0f3eb82f24ab955c7ee1034f1794c19846d97f1a /tools/editor/plugins
parent9f29b4b26a9c9d24235c266f750c14339c038227 (diff)
Allow dragging on only one (global) axis when holding down shift
Closes #1723
Diffstat (limited to 'tools/editor/plugins')
-rw-r--r--tools/editor/plugins/canvas_item_editor_plugin.cpp17
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();