Merge pull request #96765 from adamscott/selecting-locked
Some checks are pending
🔗 GHA / 📊 Static checks (push) Waiting to run
🔗 GHA / 🤖 Android (push) Blocked by required conditions
🔗 GHA / 🍏 iOS (push) Blocked by required conditions
🔗 GHA / 🐧 Linux (push) Blocked by required conditions
🔗 GHA / 🍎 macOS (push) Blocked by required conditions
🔗 GHA / 🏁 Windows (push) Blocked by required conditions
🔗 GHA / 🌐 Web (push) Blocked by required conditions
🔗 GHA / 🪲 Godot CPP (push) Blocked by required conditions

Fix issue where editable children of 3D nodes would be selected
This commit is contained in:
Rémi Verschelde 2024-09-09 23:40:14 +02:00 committed by GitHub
commit 21249950da
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 8 deletions

View File

@ -810,7 +810,7 @@ ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos) const {
Vector<Node3D *> nodes_with_gizmos = Node3DEditor::get_singleton()->gizmo_bvh_ray_query(pos, pos + ray * camera->get_far()); Vector<Node3D *> nodes_with_gizmos = Node3DEditor::get_singleton()->gizmo_bvh_ray_query(pos, pos + ray * camera->get_far());
for (Node3D *spat : nodes_with_gizmos) { for (Node3D *spat : nodes_with_gizmos) {
if (!spat) { if (!spat || _is_node_locked(spat)) {
continue; continue;
} }
@ -1557,7 +1557,7 @@ void Node3DEditorViewport::_surface_focus_exit() {
view_menu->set_disable_shortcuts(true); view_menu->set_disable_shortcuts(true);
} }
bool Node3DEditorViewport ::_is_node_locked(const Node *p_node) { bool Node3DEditorViewport::_is_node_locked(const Node *p_node) const {
return p_node->get_meta("_edit_lock_", false); return p_node->get_meta("_edit_lock_", false);
} }
@ -1935,11 +1935,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (after != EditorPlugin::AFTER_GUI_INPUT_CUSTOM) { if (after != EditorPlugin::AFTER_GUI_INPUT_CUSTOM) {
// Single item selection. // Single item selection.
Vector<_RayResult> selection; clicked = _select_ray(b->get_position());
_find_items_at_pos(b->get_position(), selection, false);
if (!selection.is_empty()) {
clicked = selection[0].item->get_instance_id();
}
selection_in_progress = true; selection_in_progress = true;

View File

@ -460,7 +460,7 @@ private:
bool previewing_camera = false; bool previewing_camera = false;
bool previewing_cinema = false; bool previewing_cinema = false;
bool _is_node_locked(const Node *p_node); bool _is_node_locked(const Node *p_node) const;
void _preview_exited_scene(); void _preview_exited_scene();
void _toggle_camera_preview(bool); void _toggle_camera_preview(bool);
void _toggle_cinema_preview(bool); void _toggle_cinema_preview(bool);