summaryrefslogtreecommitdiffstats
path: root/editor/groups_editor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/groups_editor.cpp')
-rw-r--r--editor/groups_editor.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index 9fa9fe5a9d..ba7b627207 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -31,12 +31,12 @@
#include "groups_editor.h"
#include "editor/editor_node.h"
-#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
#include "editor/editor_undo_redo_manager.h"
#include "editor/gui/editor_validation_panel.h"
#include "editor/project_settings_editor.h"
#include "editor/scene_tree_dock.h"
+#include "editor/themes/editor_scale.h"
#include "scene/gui/box_container.h"
#include "scene/gui/check_button.h"
#include "scene/gui/grid_container.h"
@@ -274,20 +274,22 @@ void GroupsEditor::_update_groups_and_tree() {
_update_tree();
}
-void GroupsEditor::_update_scene_groups(Node *p_node) {
- if (scene_groups_cache.has(p_node)) {
- scene_groups = scene_groups_cache[p_node];
- scene_groups_cache.erase(p_node);
+void GroupsEditor::_update_scene_groups(const ObjectID &p_id) {
+ HashMap<ObjectID, HashMap<StringName, bool>>::Iterator I = scene_groups_cache.find(p_id);
+ if (I) {
+ scene_groups = I->value;
+ scene_groups_cache.remove(I);
} else {
scene_groups = HashMap<StringName, bool>();
}
}
-void GroupsEditor::_cache_scene_groups(Node *p_node) {
+void GroupsEditor::_cache_scene_groups(const ObjectID &p_id) {
const int edited_scene_count = EditorNode::get_editor_data().get_edited_scene_count();
for (int i = 0; i < edited_scene_count; i++) {
- if (p_node == EditorNode::get_editor_data().get_edited_scene_root(i)) {
- scene_groups_cache[p_node] = scene_groups_for_caching;
+ Node *edited_scene_root = EditorNode::get_editor_data().get_edited_scene_root(i);
+ if (edited_scene_root && p_id == edited_scene_root->get_instance_id()) {
+ scene_groups_cache[p_id] = scene_groups_for_caching;
break;
}
}
@@ -305,7 +307,7 @@ void GroupsEditor::set_current(Node *p_node) {
if (scene_tree->get_edited_scene_root() != scene_root_node) {
scene_root_node = scene_tree->get_edited_scene_root();
- _update_scene_groups(scene_root_node);
+ _update_scene_groups(scene_root_node->get_instance_id());
_update_groups();
}
@@ -781,6 +783,9 @@ void GroupsEditor::_groups_gui_input(Ref<InputEvent> p_event) {
_menu_id_pressed(DELETE_GROUP);
} else if (ED_IS_SHORTCUT("groups_editor/rename", p_event)) {
_menu_id_pressed(RENAME_GROUP);
+ } else if (ED_IS_SHORTCUT("editor/open_search", p_event)) {
+ filter->grab_focus();
+ filter->select_all();
} else {
return;
}
@@ -803,7 +808,7 @@ void GroupsEditor::_bind_methods() {
void GroupsEditor::_node_removed(Node *p_node) {
if (scene_root_node == p_node) {
scene_groups_for_caching = scene_groups;
- callable_mp(this, &GroupsEditor::_cache_scene_groups).call_deferred(p_node);
+ callable_mp(this, &GroupsEditor::_cache_scene_groups).call_deferred(p_node->get_instance_id());
scene_root_node = nullptr;
}