diff --git a/Voile/Source/UI/Style.cs b/Voile/Source/UI/Style.cs
index 466b837..52cda49 100644
--- a/Voile/Source/UI/Style.cs
+++ b/Voile/Source/UI/Style.cs
@@ -20,6 +20,24 @@ public class Style
public Color? BorderColor { get; set; }
public float CornerRadius { get; set; }
public Color? TextColor { get; set; }
+
+ ///
+ /// Merges this with a different one.
+ /// Properties that are not set for this will be inherited from .
+ ///
+ ///
+ /// A merged .
+ public Style Merge(Style overrideStyle)
+ {
+ return new Style
+ {
+ BackgroundColor = overrideStyle.BackgroundColor != default ? overrideStyle.BackgroundColor : BackgroundColor,
+ TextColor = overrideStyle.TextColor != default ? overrideStyle.TextColor : TextColor,
+ Padding = overrideStyle.Padding != default ? overrideStyle.Padding : Padding,
+ BorderSize = overrideStyle.BorderSize != default ? overrideStyle.BorderSize : BorderSize,
+ BorderColor = overrideStyle.BorderColor != default ? overrideStyle.BorderColor : BorderColor,
+ };
+ }
}
public class StyleSheetLoader : ResourceLoader
@@ -88,25 +106,13 @@ public class StyleSheetLoader : ResourceLoader
var subKey = string.Join('.', parts.Take(i));
if (allStyles.TryGetValue(subKey, out var parentStyle))
{
- merged = MergeStyles(merged, parentStyle);
+ merged = merged.Merge(parentStyle);
}
}
return merged;
}
- private Style MergeStyles(Style baseStyle, Style overrideStyle)
- {
- return new Style
- {
- BackgroundColor = overrideStyle.BackgroundColor != default ? overrideStyle.BackgroundColor : baseStyle.BackgroundColor,
- TextColor = overrideStyle.TextColor != default ? overrideStyle.TextColor : baseStyle.TextColor,
- Padding = overrideStyle.Padding != default ? overrideStyle.Padding : baseStyle.Padding,
- BorderSize = overrideStyle.BorderSize != default ? overrideStyle.BorderSize : baseStyle.BorderSize,
- BorderColor = overrideStyle.BorderColor != default ? overrideStyle.BorderColor : baseStyle.BorderColor,
- };
- }
-
private readonly TomlDataReader _reader = new();
}