do not allow removal of groups that come from instanced/inherited scene, closes #5505

This commit is contained in:
Juan Linietsky 2016-07-07 20:49:43 -03:00
parent f1e1910ae4
commit a1d841e6f7
1 changed files with 28 additions and 2 deletions

View File

@ -31,7 +31,7 @@
#include "scene/gui/box_container.h"
#include "scene/gui/label.h"
#include "editor_node.h"
#include "scene/resources/packed_scene.h"
void GroupsEditor::_add_group(const String& p_group) {
if (!node)
@ -107,9 +107,35 @@ void GroupsEditor::update_tree() {
if (!gi.persistent)
continue;
Node *n = node;
bool can_be_deleted=true;
while(n) {
Ref<SceneState> ss = (n==EditorNode::get_singleton()->get_edited_scene()) ? n->get_scene_inherited_state() : n->get_scene_instance_state();
if (ss.is_valid()) {
int path = ss->find_node_by_path(n->get_path_to(node));
if (path!=-1) {
if (ss->is_node_in_group(path,gi.name)) {
can_be_deleted=false;
}
}
}
n=n->get_owner();
}
TreeItem *item=tree->create_item(root);
item->set_text(0, gi.name);
item->add_button(0, get_icon("Remove", "EditorIcons"), 0);
if (can_be_deleted) {
item->add_button(0, get_icon("Remove", "EditorIcons"), 0);
} else {
item->set_selectable(0,false);
}
}
}