From 628219c922864742349efd93dabaa6956ca63f95 Mon Sep 17 00:00:00 2001 From: Ryan Roden-Corrent Date: Thu, 10 Feb 2022 08:23:10 -0500 Subject: Don't block input after cancelling transform. After starting an instant transform and cancelling it, the mouse was blocked because cancel_transform did not set _edit.instant back to false. This refactors all the cleanup into a separate function that both cancel_transform and commit_transform can call. Fixes #57868. --- editor/plugins/node_3d_editor_plugin.cpp | 20 ++++++++++++-------- editor/plugins/node_3d_editor_plugin.h | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'editor') diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index e35af6dd64..a462750fee 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -385,8 +385,6 @@ int Node3DEditorViewport::get_selected_count() const { } void Node3DEditorViewport::cancel_transform() { - _edit.mode = TRANSFORM_NONE; - List &selection = editor_selection->get_selected_node_list(); for (List::Element *E = selection.front(); E; E = E->next()) { @@ -402,7 +400,8 @@ void Node3DEditorViewport::cancel_transform() { sp->set_global_transform(se->original); } - surface->update(); + + finish_transform(); set_message(TTR("Transform Aborted."), 3); } @@ -4063,12 +4062,9 @@ void Node3DEditorViewport::commit_transform() { undo_redo->add_undo_method(sp, "set_global_transform", se->original); } undo_redo->commit_action(); - _edit.mode = TRANSFORM_NONE; - _edit.instant = false; - spatial_editor->set_local_coords_enabled(_edit.original_local); + + finish_transform(); set_message(""); - spatial_editor->update_transform_gizmo(); - surface->update(); } void Node3DEditorViewport::update_transform(Point2 p_mousepos, bool p_shift) { @@ -4407,6 +4403,14 @@ void Node3DEditorViewport::update_transform(Point2 p_mousepos, bool p_shift) { } } +void Node3DEditorViewport::finish_transform() { + spatial_editor->set_local_coords_enabled(_edit.original_local); + spatial_editor->update_transform_gizmo(); + _edit.mode = TRANSFORM_NONE; + _edit.instant = false; + surface->update(); +} + Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, EditorNode *p_editor, int p_index) { cpu_time_history_index = 0; gpu_time_history_index = 0; diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h index bbe5615570..cb7c5a714b 100644 --- a/editor/plugins/node_3d_editor_plugin.h +++ b/editor/plugins/node_3d_editor_plugin.h @@ -409,6 +409,7 @@ private: void begin_transform(TransformMode p_mode, bool instant); void commit_transform(); void update_transform(Point2 p_mousepos, bool p_shift); + void finish_transform(); protected: void _notification(int p_what); -- cgit v1.2.3