diff options
Diffstat (limited to 'editor/plugins/abstract_polygon_2d_editor.cpp')
-rw-r--r-- | editor/plugins/abstract_polygon_2d_editor.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp index e7a1d2735e..dd52375c10 100644 --- a/editor/plugins/abstract_polygon_2d_editor.cpp +++ b/editor/plugins/abstract_polygon_2d_editor.cpp @@ -291,6 +291,7 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) const PosVertex closest = closest_point(gpoint); if (closest.valid()) { + original_mouse_pos = gpoint; pre_move_edit = _get_polygon(closest.polygon); edited_point = PosVertex(closest, xform.affine_inverse().xform(closest.pos)); selected_point = closest; @@ -327,15 +328,15 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) } } else { if (edited_point.valid()) { - //apply - - Vector<Vector2> vertices = _get_polygon(edited_point.polygon); - ERR_FAIL_INDEX_V(edited_point.vertex, vertices.size(), false); - vertices.write[edited_point.vertex] = edited_point.pos - _get_offset(edited_point.polygon); - - undo_redo->create_action(TTR("Edit Polygon")); - _action_set_polygon(edited_point.polygon, pre_move_edit, vertices); - _commit_action(); + if (original_mouse_pos != gpoint) { + Vector<Vector2> vertices = _get_polygon(edited_point.polygon); + ERR_FAIL_INDEX_V(edited_point.vertex, vertices.size(), false); + vertices.write[edited_point.vertex] = edited_point.pos - _get_offset(edited_point.polygon); + + undo_redo->create_action(TTR("Edit Polygon")); + _action_set_polygon(edited_point.polygon, pre_move_edit, vertices); + _commit_action(); + } edited_point = PosVertex(); return true; |