You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-06 12:20:30 +00:00
Prevent selecting hidden nodes in 3D and Canvas Item editors
This commit is contained in:
@@ -534,10 +534,7 @@ ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, b
|
||||
}
|
||||
|
||||
if (dist < closest_dist) {
|
||||
item = Object::cast_to<Node>(spat);
|
||||
while (item->get_owner() && item->get_owner() != edited_scene && !edited_scene->is_editable_instance(item->get_owner())) {
|
||||
item = item->get_owner();
|
||||
}
|
||||
item = edited_scene->get_deepest_editable_node(Object::cast_to<Node>(spat));
|
||||
|
||||
closest = item->get_instance_id();
|
||||
closest_dist = dist;
|
||||
@@ -696,10 +693,7 @@ void Node3DEditorViewport::_select_region() {
|
||||
continue;
|
||||
}
|
||||
|
||||
Node *item = Object::cast_to<Node>(sp);
|
||||
while (item->get_owner() && item->get_owner() != edited_scene && !edited_scene->is_editable_instance(item->get_owner())) {
|
||||
item = item->get_owner();
|
||||
}
|
||||
Node *item = edited_scene->get_deepest_editable_node(Object::cast_to<Node>(sp));
|
||||
|
||||
// Replace the node by the group if grouped
|
||||
if (item->is_class("Node3D")) {
|
||||
@@ -1027,7 +1021,7 @@ void Node3DEditorViewport::_list_select(Ref<InputEventMouseButton> b) {
|
||||
|
||||
for (int i = 0; i < selection_results.size(); i++) {
|
||||
Node3D *item = selection_results[i].item;
|
||||
if (item != scene && item->get_owner() != scene && !scene->is_editable_instance(item->get_owner())) {
|
||||
if (item != scene && item->get_owner() != scene && item != scene->get_deepest_editable_node(item)) {
|
||||
//invalid result
|
||||
selection_results.remove(i);
|
||||
i--;
|
||||
|
||||
Reference in New Issue
Block a user