include type name of fields in inspector tooltips

This commit is contained in:
Dmitry Stepanov
2026-08-30 17:01:56 +03:00
parent 724e75536a
commit 135dc00c94
10 changed files with 53 additions and 50 deletions
@@ -282,6 +282,7 @@ impl PropertyEditorDefinition for DynTypePropertyEditorDefinition {
ctx.name_column_width,
ctx.hide_name_column,
None,
value.type_info_ref().type_name,
ctx.build_context,
);
@@ -381,6 +381,7 @@ impl PropertyEditorDefinition for ScriptPropertyEditorDefinition {
ctx.name_column_width,
ctx.hide_name_column,
None,
value.type_info_ref().type_name,
ctx.build_context,
);
+3 -3
View File
@@ -59,11 +59,11 @@ pub struct FieldMetadata<'s> {
}
impl<'s> FieldMetadata<'s> {
pub fn description(&self) -> String {
pub fn description(&self, type_name: &str) -> String {
if self.doc.is_empty() {
self.display_name.to_string()
format!("{} ({type_name})", self.display_name)
} else {
format!("{}\n\n{}", self.display_name, self.doc)
format!("{} ({type_name})\n\n{}", self.display_name, self.doc)
}
}
}
+10 -12
View File
@@ -332,16 +332,8 @@ where
) -> Result<PropertyEditorInstance, InspectorError> {
let value = ctx.property_info.cast_value::<[T; N]>()?;
let editor;
let container = make_expander_container(
ctx.layer_index,
ctx.property_info.display_name,
ctx.property_info.doc,
Handle::<UiNode>::NONE,
{
editor = ArrayEditorBuilder::new(
WidgetBuilder::new().with_margin(Thickness::uniform(1.0)),
)
let editor =
ArrayEditorBuilder::new(WidgetBuilder::new().with_margin(Thickness::uniform(1.0)))
.with_collection(value.iter())
.with_environment(ctx.environment.clone())
.with_layer_index(ctx.layer_index + 1)
@@ -356,11 +348,17 @@ where
ctx.base_path.clone(),
ctx.has_parent_object,
)?;
editor
},
let container = make_expander_container(
ctx.layer_index,
ctx.property_info.display_name,
ctx.property_info.doc,
Handle::<UiNode>::NONE,
editor,
ctx.name_column_width,
false,
None,
value.type_info_ref().type_name,
ctx.build_context,
);
+10 -12
View File
@@ -468,16 +468,8 @@ where
.with_image(resources::ADD.clone())
.build_button(ctx.build_context);
let editor;
let container = make_expander_container(
ctx.layer_index,
ctx.property_info.display_name,
ctx.property_info.doc,
add,
{
editor = CollectionEditorBuilder::new(
WidgetBuilder::new().with_margin(Thickness::uniform(1.0)),
)
let editor =
CollectionEditorBuilder::new(WidgetBuilder::new().with_margin(Thickness::uniform(1.0)))
.with_add(add)
.with_collection(value.iter())
.with_environment(ctx.environment.clone())
@@ -493,11 +485,17 @@ where
ctx.base_path.clone(),
ctx.has_parent_object,
)?;
editor
},
let container = make_expander_container(
ctx.layer_index,
ctx.property_info.display_name,
ctx.property_info.doc,
add,
editor,
ctx.name_column_width,
ctx.hide_name_column,
None,
value.type_info_ref().type_name,
ctx.build_context,
);
+18 -19
View File
@@ -386,33 +386,32 @@ where
.build(ctx.build_context)
.to_base();
let editor;
let editor = EnumPropertyEditorBuilder::new(WidgetBuilder::new())
.with_variant_selector(variant_selector)
.with_layer_index(ctx.layer_index + 1)
.with_definition_container(ctx.definition_container.clone())
.with_environment(ctx.environment.clone())
.with_generate_property_string_values(ctx.generate_property_string_values)
.with_filter(ctx.filter)
.build(
ctx.build_context,
self,
value,
ctx.name_column_width,
ctx.base_path.clone(),
ctx.has_parent_object,
);
let container = make_expander_container(
ctx.layer_index,
ctx.property_info.display_name,
ctx.property_info.doc,
variant_selector,
{
editor = EnumPropertyEditorBuilder::new(WidgetBuilder::new())
.with_variant_selector(variant_selector)
.with_layer_index(ctx.layer_index + 1)
.with_definition_container(ctx.definition_container.clone())
.with_environment(ctx.environment.clone())
.with_generate_property_string_values(ctx.generate_property_string_values)
.with_filter(ctx.filter)
.build(
ctx.build_context,
self,
value,
ctx.name_column_width,
ctx.base_path.clone(),
ctx.has_parent_object,
);
editor
},
editor,
ctx.name_column_width,
ctx.hide_name_column,
None,
value.type_info_ref().type_name,
ctx.build_context,
);
@@ -252,6 +252,7 @@ where
ctx.name_column_width,
ctx.hide_name_column,
Some(Brush::solid(160, 160, 200)),
value.type_info_ref().type_name,
ctx.build_context,
);
@@ -117,6 +117,7 @@ where
ctx.name_column_width,
ctx.hide_name_column,
None,
value.type_info_ref().type_name,
ctx.build_context,
);
@@ -111,6 +111,7 @@ where
ctx.name_column_width,
ctx.hide_name_column,
None,
value.type_info_ref().type_name,
ctx.build_context,
);
+7 -4
View File
@@ -1062,6 +1062,7 @@ fn make_expander_check_box(
property_description: &str,
hide_name: bool,
text_brush: Option<Brush>,
type_name: &str,
ctx: &mut BuildContext,
) -> Handle<CheckBox> {
let handle = CheckBoxBuilder::new(
@@ -1082,9 +1083,9 @@ fn make_expander_check_box(
Handle::NONE
} else {
let description = if property_description.is_empty() {
property_name.to_string()
format!("{property_name} ({type_name})")
} else {
format!("{property_name}\n\n{property_description}")
format!("{property_name} ({type_name})\n\n{property_description}")
};
TextBuilder::new(
WidgetBuilder::new()
@@ -1128,6 +1129,7 @@ pub fn make_expander_container(
width: f32,
hide_name_column: bool,
text_brush: Option<Brush>,
type_name: &str,
ctx: &mut BuildContext,
) -> Handle<UiNode> {
ExpanderBuilder::new(WidgetBuilder::new())
@@ -1137,6 +1139,7 @@ pub fn make_expander_container(
description,
hide_name_column,
text_brush,
type_name,
ctx,
))
.with_expander_column(if hide_name_column {
@@ -1180,7 +1183,7 @@ fn make_tooltip(ctx: &mut BuildContext, text: &str) -> Option<RcUiNodeHandle> {
}
}
pub fn make_simple_property_container(
fn make_simple_property_container(
title: Handle<Text>,
editor: Handle<impl ObjectOrVariant<UiNode>>,
description: &str,
@@ -1315,7 +1318,7 @@ impl InspectorContext {
continue;
}
let description = info.description();
let description = info.description(info.value.type_info_ref().type_name);
if let Some(definition) = definition_container
.definitions()