diff --git a/editor/scene/3d/node_3d_editor_plugin.cpp b/editor/scene/3d/node_3d_editor_plugin.cpp index aac34bd6912..21c37fb27f1 100644 --- a/editor/scene/3d/node_3d_editor_plugin.cpp +++ b/editor/scene/3d/node_3d_editor_plugin.cpp @@ -7296,6 +7296,12 @@ void Node3DEditor::_menu_item_pressed(int p_option) { case MENU_TOOL_ROTATE: case MENU_TOOL_SCALE: case MENU_TOOL_LIST_SELECT: { + for (uint32_t i = 0; i < VIEWPORTS_COUNT; i++) { + if (viewports[i]->_edit.mode != Node3DEditorViewport::TRANSFORM_NONE) { + viewports[i]->commit_transform(); + } + } + for (int i = 0; i < TOOL_MAX; i++) { tool_button[i]->set_pressed(i == p_option); } diff --git a/editor/scene/canvas_item_editor_plugin.cpp b/editor/scene/canvas_item_editor_plugin.cpp index eb8127facc0..de25f78e979 100644 --- a/editor/scene/canvas_item_editor_plugin.cpp +++ b/editor/scene/canvas_item_editor_plugin.cpp @@ -4546,6 +4546,10 @@ void CanvasItemEditor::_button_toggle_grid_snap(bool p_status) { } void CanvasItemEditor::_button_tool_select(int p_index) { + if (drag_type != DRAG_NONE) { + _commit_drag(); + } + Button *tb[TOOL_MAX] = { select_button, list_select_button, move_button, scale_button, rotate_button, pivot_button, pan_button, ruler_button }; for (int i = 0; i < TOOL_MAX; i++) { tb[i]->set_pressed(i == p_index);