You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Improvements to multi-node editing
- Show revert button for properties that are not default for all selected nodes - Show property documentation tooltips - Show common class name and icon and number of selected nodes in EditorPath, e.g. "Node2D (4 Selected)" - Hide metadata for MultiNodeEdit and AnimationMultiTrackKeyEdit - Hide script for MultiNodeEdit
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include "editor/editor_data.h"
|
||||
#include "editor/editor_node.h"
|
||||
#include "editor/editor_scale.h"
|
||||
#include "editor/multi_node_edit.h"
|
||||
|
||||
void EditorPath::_add_children_to_popup(Object *p_obj, int p_depth) {
|
||||
if (p_depth > 8) {
|
||||
@@ -121,14 +122,22 @@ void EditorPath::update_path() {
|
||||
continue;
|
||||
}
|
||||
|
||||
Ref<Texture2D> icon = EditorNode::get_singleton()->get_object_icon(obj);
|
||||
Ref<Texture2D> icon;
|
||||
if (Object::cast_to<MultiNodeEdit>(obj)) {
|
||||
icon = EditorNode::get_singleton()->get_class_icon(Object::cast_to<MultiNodeEdit>(obj)->get_edited_class_name());
|
||||
} else {
|
||||
icon = EditorNode::get_singleton()->get_object_icon(obj);
|
||||
}
|
||||
|
||||
if (icon.is_valid()) {
|
||||
current_object_icon->set_texture(icon);
|
||||
}
|
||||
|
||||
if (i == history->get_path_size() - 1) {
|
||||
String name;
|
||||
if (Object::cast_to<Resource>(obj)) {
|
||||
if (obj->has_method("_get_editor_name")) {
|
||||
name = obj->call("_get_editor_name");
|
||||
} else if (Object::cast_to<Resource>(obj)) {
|
||||
Resource *r = Object::cast_to<Resource>(obj);
|
||||
if (r->get_path().is_resource_file()) {
|
||||
name = r->get_path().get_file();
|
||||
@@ -149,7 +158,7 @@ void EditorPath::update_path() {
|
||||
name = obj->get_class();
|
||||
}
|
||||
|
||||
current_object_label->set_text(" " + name); // An extra space so the text is not too close of the icon.
|
||||
current_object_label->set_text(name);
|
||||
set_tooltip_text(obj->get_class());
|
||||
}
|
||||
}
|
||||
@@ -161,12 +170,12 @@ void EditorPath::clear_path() {
|
||||
|
||||
current_object_label->set_text("");
|
||||
current_object_icon->set_texture(nullptr);
|
||||
sub_objects_icon->set_visible(false);
|
||||
sub_objects_icon->hide();
|
||||
}
|
||||
|
||||
void EditorPath::enable_path() {
|
||||
set_disabled(false);
|
||||
sub_objects_icon->set_visible(true);
|
||||
sub_objects_icon->show();
|
||||
}
|
||||
|
||||
void EditorPath::_id_pressed(int p_idx) {
|
||||
@@ -186,7 +195,7 @@ void EditorPath::_notification(int p_what) {
|
||||
case NOTIFICATION_THEME_CHANGED: {
|
||||
update_path();
|
||||
|
||||
sub_objects_icon->set_texture(get_theme_icon(SNAME("select_arrow"), SNAME("Tree")));
|
||||
sub_objects_icon->set_texture(get_theme_icon(SNAME("arrow"), SNAME("OptionButton")));
|
||||
current_object_label->add_theme_font_override("font", get_theme_font(SNAME("main"), SNAME("EditorFonts")));
|
||||
} break;
|
||||
|
||||
@@ -216,13 +225,12 @@ EditorPath::EditorPath(EditorSelectionHistory *p_history) {
|
||||
main_hb->add_child(current_object_icon);
|
||||
|
||||
current_object_label = memnew(Label);
|
||||
current_object_label->set_clip_text(true);
|
||||
current_object_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_LEFT);
|
||||
current_object_label->set_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
|
||||
current_object_label->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
main_hb->add_child(current_object_label);
|
||||
|
||||
sub_objects_icon = memnew(TextureRect);
|
||||
sub_objects_icon->set_visible(false);
|
||||
sub_objects_icon->hide();
|
||||
sub_objects_icon->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);
|
||||
main_hb->add_child(sub_objects_icon);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user