summaryrefslogtreecommitdiffstats
path: root/editor/plugins/node_3d_editor_plugin.cpp
diff options
context:
space:
mode:
authorjsjtxietian <jsjtxietian@outlook.com>2024-03-06 17:51:14 +0800
committerjsjtxietian <jsjtxietian@outlook.com>2024-03-21 13:02:34 +0800
commit816812ee6cb84f9c899e1c6de52f9a4c9e7d2c0c (patch)
tree75a595c0c7d1dce9d42d6e78a37aa128ce601716 /editor/plugins/node_3d_editor_plugin.cpp
parentfe01776f05b1787b28b4a270d53037a3c25f4ca2 (diff)
downloadredot-engine-816812ee6cb84f9c899e1c6de52f9a4c9e7d2c0c.tar.gz
Disable lock and group buttons when selected item can't be locked or grouped
Diffstat (limited to 'editor/plugins/node_3d_editor_plugin.cpp')
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp27
1 files changed, 18 insertions, 9 deletions
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index f38d42f681..7a4a7ddaec 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -7376,6 +7376,7 @@ void Node3DEditor::_selection_changed() {
void Node3DEditor::_refresh_menu_icons() {
bool all_locked = true;
bool all_grouped = true;
+ bool has_node3d_item = false;
List<Node *> &selection = editor_selection->get_selected_node_list();
@@ -7384,26 +7385,34 @@ void Node3DEditor::_refresh_menu_icons() {
all_grouped = false;
} else {
for (Node *E : selection) {
- if (Object::cast_to<Node3D>(E) && !Object::cast_to<Node3D>(E)->has_meta("_edit_lock_")) {
- all_locked = false;
- break;
+ Node3D *node = Object::cast_to<Node3D>(E);
+ if (node) {
+ if (all_locked && !node->has_meta("_edit_lock_")) {
+ all_locked = false;
+ }
+ if (all_grouped && !node->has_meta("_edit_group_")) {
+ all_grouped = false;
+ }
+ has_node3d_item = true;
}
- }
- for (Node *E : selection) {
- if (Object::cast_to<Node3D>(E) && !Object::cast_to<Node3D>(E)->has_meta("_edit_group_")) {
- all_grouped = false;
+ if (!all_locked && !all_grouped) {
break;
}
}
}
+ all_locked = all_locked && has_node3d_item;
+ all_grouped = all_grouped && has_node3d_item;
+
tool_button[TOOL_LOCK_SELECTED]->set_visible(!all_locked);
- tool_button[TOOL_LOCK_SELECTED]->set_disabled(selection.is_empty());
+ tool_button[TOOL_LOCK_SELECTED]->set_disabled(!has_node3d_item);
tool_button[TOOL_UNLOCK_SELECTED]->set_visible(all_locked);
+ tool_button[TOOL_UNLOCK_SELECTED]->set_disabled(!has_node3d_item);
tool_button[TOOL_GROUP_SELECTED]->set_visible(!all_grouped);
- tool_button[TOOL_GROUP_SELECTED]->set_disabled(selection.is_empty());
+ tool_button[TOOL_GROUP_SELECTED]->set_disabled(!has_node3d_item);
tool_button[TOOL_UNGROUP_SELECTED]->set_visible(all_grouped);
+ tool_button[TOOL_UNGROUP_SELECTED]->set_disabled(!has_node3d_item);
}
template <typename T>