sync radius

This commit is contained in:
2026-10-28 17:30:54 +07:00
parent 0b8b619342
commit 5cbffe8172
6 changed files with 43 additions and 8 deletions
+20 -2
View File
@@ -138,8 +138,12 @@ pub(crate) fn resolve(
}
let mut radius = Radius::default();
if let Some(control) = preset.and_then(|def| def.control_radius) {
radius.control = px(control);
if let Some(control) = preset
.and_then(|def| def.control_radius)
.map(px)
.or(system.control_radius)
{
radius.control = control;
}
ResolvedTheme {
@@ -182,11 +186,25 @@ mod tests {
variant,
accent,
palette,
control_radius: None,
accessibility: AccessibilityPreferences::default(),
source: SourceKind::Macos,
}
}
#[test]
fn metric_priority_is_definition_then_system_then_fallback() {
let mut stated = system(ThemeVariant::Dark, PartialPalette::default(), None);
stated.control_radius = Some(px(4.));
let resolved = resolve(&stated, None, None);
assert_eq!(resolved.radius.control, px(4.));
let def = ThemeDefinition::parse_toml("control_radius = 12.0\n").unwrap();
let overridden = resolve(&stated, Some(&def), None);
assert_eq!(overridden.radius.control, px(12.));
}
#[test]
fn empty_system_resolves_to_the_neutral_fallback() {
for variant in [ThemeVariant::Light, ThemeVariant::Dark] {