public void BindStyleField(BuilderStyleRow styleRow, FoldoutNumberField foldoutElement) { var intFields = foldoutElement.Query <IntegerField>().ToList(); foreach (var field in intFields) { field.SetProperty(BuilderConstants.FoldoutFieldPropertyName, foldoutElement); field.RegisterValueChangedCallback((evt) => { var row = field.GetProperty(BuilderConstants.InspectorLinkedStyleRowVEPropertyName) as BuilderStyleRow; if (row != null && !string.IsNullOrEmpty(row.bindingPath)) { foldoutElement.UpdateFromChildField(row.bindingPath, field.value.ToString()); } foldoutElement.header.AddToClassList(BuilderConstants.InspectorLocalStyleOverrideClassName); }); BuilderStyleRow.ReAssignTooltipToChild(field); } foldoutElement.header.SetProperty(BuilderConstants.FoldoutFieldPropertyName, foldoutElement); foldoutElement.headerInputField.RegisterValueChangedCallback(FoldoutNumberFieldOnValueChange); foldoutElement.headerInputField.AddManipulator( new ContextualMenuManipulator((e) => { e.target = foldoutElement.header; BuildStyleFieldContextualMenu(e); })); foldoutElement.header.AddManipulator( new ContextualMenuManipulator(BuildStyleFieldContextualMenu)); }
void RefreshStyleFoldoutNumberField(FoldoutNumberField foldoutElement) { var isDirty = false; foreach (var path in foldoutElement.bindingPathArray) { var cSharpStyleName = ConvertUssStyleNameToCSharpStyleName(path); var styleProperty = GetStyleProperty(currentRule, cSharpStyleName); var field = FindStylePropertyInfo(path); if (field == null) { continue; } var val = field.GetValue(currentVisualElement.computedStyle, null); if (val is StyleFloat) { var style = (StyleFloat)val; var value = style.value; if (styleProperty != null) { isDirty = true; value = styleSheet.GetFloat(styleProperty.values[0]); } foldoutElement.UpdateFromChildField(path, value.ToString()); } else if (val is StyleInt) { var style = (StyleInt)val; var value = style.value; if (styleProperty != null) { isDirty = true; value = styleSheet.GetInt(styleProperty.values[0]); } foldoutElement.UpdateFromChildField(path, value.ToString()); } else if (val is StyleLength) { var style = (StyleLength)val; var value = (int)style.value.value; if (styleProperty != null) { isDirty = true; #if UNITY_2019_3_OR_NEWER value = (int)styleSheet.GetDimension(styleProperty.values[0]).value; #else value = styleSheet.GetInt(styleProperty.values[0]); #endif } foldoutElement.UpdateFromChildField(path, value.ToString()); } } if (isDirty) { foldoutElement.header.AddToClassList(BuilderConstants.InspectorLocalStyleOverrideClassName); } else { foldoutElement.header.RemoveFromClassList(BuilderConstants.InspectorLocalStyleOverrideClassName); } }