diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 082d9c346e4..80104cd5cc2 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -424,7 +424,9 @@ void ViewportRotationControl::_process_click(int p_index, Vector2 p_position, bo } void ViewportRotationControl::_process_drag(Ref p_event, int p_index, Vector2 p_position, Vector2 p_relative_position) { - if (orbiting_index == p_index && gizmo_activated) { + Point2 mouse_pos = get_local_mouse_position(); + const bool movement_threshold_passed = original_mouse_pos.distance_to(mouse_pos) > 4 * EDSCALE; + if (orbiting_index == p_index && gizmo_activated && movement_threshold_passed) { if (Input::get_singleton()->get_mouse_mode() == Input::MOUSE_MODE_VISIBLE) { Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED); orbiting_mouse_start = p_position; @@ -459,6 +461,7 @@ void ViewportRotationControl::gui_input(const Ref &p_event) { _process_click(100, mb->get_position(), mb->is_pressed()); if (mb->is_pressed()) { gizmo_activated = true; + original_mouse_pos = get_local_mouse_position(); grab_focus(); } } else if (mb->get_button_index() == MouseButton::RIGHT) { diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h index 27c709fb064..d4457064046 100644 --- a/editor/plugins/node_3d_editor_plugin.h +++ b/editor/plugins/node_3d_editor_plugin.h @@ -83,6 +83,7 @@ class ViewportRotationControl : public Control { Vector axis_colors; Vector axis_menu_options; Vector2i orbiting_mouse_start; + Point2 original_mouse_pos; int orbiting_index = -1; int focused_axis = -2; bool gizmo_activated = false;