فهرست منبع

Merge pull request #105773 from dugramen/fix-inspector-spacing

Fix inspector spacing issues
Thaddeus Crews 3 هفته پیش
والد
کامیت
a7b2cd66ad
2فایلهای تغییر یافته به همراه22 افزوده شده و 5 حذف شده
  1. 20 5
      editor/inspector/editor_inspector.cpp
  2. 2 0
      editor/inspector/editor_inspector.h

+ 20 - 5
editor/inspector/editor_inspector.cpp

@@ -1907,7 +1907,6 @@ void EditorInspectorSection::_notification(int p_what) {
 
 
 			bg_color = theme_cache.prop_subsection;
 			bg_color = theme_cache.prop_subsection;
 			bg_color.a /= level;
 			bg_color.a /= level;
-			vbox->add_theme_constant_override(SNAME("separation"), theme_cache.vertical_separation);
 		} break;
 		} break;
 
 
 		case NOTIFICATION_SORT_CHILDREN: {
 		case NOTIFICATION_SORT_CHILDREN: {
@@ -3667,6 +3666,22 @@ bool EditorInspector::_is_property_disabled_by_feature_profile(const StringName
 	return false;
 	return false;
 }
 }
 
 
+void EditorInspector::_add_section_in_tree(EditorInspectorSection *p_section, VBoxContainer *p_current_vbox) {
+	// Place adjacent sections in their own vbox with 0 separation
+	VBoxContainer *container = nullptr;
+	if (p_current_vbox->get_child_count() > 0) {
+		Node *last_child = p_current_vbox->get_child(-1);
+		container = Object::cast_to<VBoxContainer>(last_child);
+	}
+	if (!container) {
+		container = memnew(VBoxContainer);
+		int separation = get_theme_constant(SNAME("v_separation"), SNAME("EditorInspector"));
+		container->add_theme_constant_override("separation", separation);
+		p_current_vbox->add_child(container);
+	}
+	container->add_child(p_section);
+}
+
 void EditorInspector::update_tree() {
 void EditorInspector::update_tree() {
 	if (!object) {
 	if (!object) {
 		return;
 		return;
@@ -4063,16 +4078,16 @@ void EditorInspector::update_tree() {
 		// Recreate the category vbox if it was reset.
 		// Recreate the category vbox if it was reset.
 		if (category_vbox == nullptr) {
 		if (category_vbox == nullptr) {
 			category_vbox = memnew(VBoxContainer);
 			category_vbox = memnew(VBoxContainer);
-			category_vbox->add_theme_constant_override(SNAME("separation"), theme_cache.vertical_separation);
 			category_vbox->hide();
 			category_vbox->hide();
 			main_vbox->add_child(category_vbox);
 			main_vbox->add_child(category_vbox);
 		}
 		}
 
 
 		// Find the correct section/vbox to add the property editor to.
 		// Find the correct section/vbox to add the property editor to.
-		VBoxContainer *root_vbox = array_prefix.is_empty() ? main_vbox : editor_inspector_array_per_prefix[array_prefix]->get_vbox(array_index);
+		VBoxContainer *root_vbox = array_prefix.is_empty() ? category_vbox : editor_inspector_array_per_prefix[array_prefix]->get_vbox(array_index);
 		if (!root_vbox) {
 		if (!root_vbox) {
 			continue;
 			continue;
 		}
 		}
+		category_vbox->show();
 
 
 		if (!vbox_per_path.has(root_vbox)) {
 		if (!vbox_per_path.has(root_vbox)) {
 			vbox_per_path[root_vbox] = HashMap<String, VBoxContainer *>();
 			vbox_per_path[root_vbox] = HashMap<String, VBoxContainer *>();
@@ -4092,7 +4107,7 @@ void EditorInspector::update_tree() {
 				// If the section does not exists, create it.
 				// If the section does not exists, create it.
 				EditorInspectorSection *section = memnew(EditorInspectorSection);
 				EditorInspectorSection *section = memnew(EditorInspectorSection);
 				get_root_inspector()->get_v_scroll_bar()->connect(SceneStringName(value_changed), callable_mp(section, &EditorInspectorSection::reset_timer).unbind(1));
 				get_root_inspector()->get_v_scroll_bar()->connect(SceneStringName(value_changed), callable_mp(section, &EditorInspectorSection::reset_timer).unbind(1));
-				current_vbox->add_child(section);
+				_add_section_in_tree(section, current_vbox);
 				sections.push_back(section);
 				sections.push_back(section);
 
 
 				String label;
 				String label;
@@ -4202,7 +4217,7 @@ void EditorInspector::update_tree() {
 			}
 			}
 
 
 			if (editor_inspector_array) {
 			if (editor_inspector_array) {
-				current_vbox->add_child(editor_inspector_array);
+				_add_section_in_tree(editor_inspector_array, current_vbox);
 				editor_inspector_array_per_prefix[array_element_prefix] = editor_inspector_array;
 				editor_inspector_array_per_prefix[array_element_prefix] = editor_inspector_array;
 			}
 			}
 
 

+ 2 - 0
editor/inspector/editor_inspector.h

@@ -769,6 +769,8 @@ class EditorInspector : public ScrollContainer {
 	void _add_meta_confirm();
 	void _add_meta_confirm();
 	void _show_add_meta_dialog();
 	void _show_add_meta_dialog();
 
 
+	void _handle_menu_option(int p_option);
+	void _add_section_in_tree(EditorInspectorSection *p_section, VBoxContainer *p_current_vbox);
 	static EditorInspector *_get_control_parent_inspector(Control *p_control);
 	static EditorInspector *_get_control_parent_inspector(Control *p_control);
 
 
 protected:
 protected: