Browse Source

add Style and ControlTheme to WellKnownTypes

pull/10113/head
Dmitry Zhelnin 4 years ago
committed by DmitryZhelnin
parent
commit
0b726e1eff
  1. 3
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlControlThemeTransformer.cs
  2. 5
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDuplicateSettersChecker.cs
  3. 3
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlSelectorTransformer.cs
  4. 4
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs

3
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlControlThemeTransformer.cs

@ -11,7 +11,8 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
{ {
public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node)
{ {
if (!(node is XamlAstObjectNode on && on.Type.GetClrType().FullName == "Avalonia.Styling.ControlTheme")) if (node is not XamlAstObjectNode on ||
!context.GetAvaloniaTypes().ControlTheme.IsAssignableFrom(on.Type.GetClrType()))
return node; return node;
// Check if we've already transformed this node. // Check if we've already transformed this node.

5
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDuplicateSettersChecker.cs

@ -15,8 +15,9 @@ class AvaloniaXamlIlDuplicateSettersChecker : IXamlAstTransformer
return node; return node;
} }
var fullName = objectNode.Type.GetClrType().FullName; var nodeType = objectNode.Type.GetClrType();
if (fullName is not ("Avalonia.Styling.Style" or "Avalonia.Styling.ControlTheme")) if (!context.GetAvaloniaTypes().Style.IsAssignableFrom(nodeType) &&
!context.GetAvaloniaTypes().ControlTheme.IsAssignableFrom(nodeType))
{ {
return node; return node;
} }

3
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlSelectorTransformer.cs

@ -19,7 +19,8 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
{ {
public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node)
{ {
if (!(node is XamlAstObjectNode on && on.Type.GetClrType().FullName == "Avalonia.Styling.Style")) if (node is not XamlAstObjectNode on ||
!context.GetAvaloniaTypes().Style.IsAssignableFrom(on.Type.GetClrType()))
return node; return node;
var pn = on.Children.OfType<XamlAstXamlPropertyValueNode>() var pn = on.Children.OfType<XamlAstXamlPropertyValueNode>()

4
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs

@ -111,6 +111,8 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
public IXamlMethod ResourceDictionaryDeferredAdd { get; } public IXamlMethod ResourceDictionaryDeferredAdd { get; }
public IXamlType UriKind { get; } public IXamlType UriKind { get; }
public IXamlConstructor UriConstructor { get; } public IXamlConstructor UriConstructor { get; }
public IXamlType Style { get; }
public IXamlType ControlTheme { get; }
public AvaloniaXamlIlWellKnownTypes(TransformerConfiguration cfg) public AvaloniaXamlIlWellKnownTypes(TransformerConfiguration cfg)
{ {
@ -248,6 +250,8 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
XamlIlTypes.Object)); XamlIlTypes.Object));
UriKind = cfg.TypeSystem.GetType("System.UriKind"); UriKind = cfg.TypeSystem.GetType("System.UriKind");
UriConstructor = Uri.GetConstructor(new List<IXamlType>() { cfg.WellKnownTypes.String, UriKind }); UriConstructor = Uri.GetConstructor(new List<IXamlType>() { cfg.WellKnownTypes.String, UriKind });
Style = cfg.TypeSystem.GetType("Avalonia.Styling.Style");
ControlTheme = cfg.TypeSystem.GetType("Avalonia.Styling.ControlTheme");
} }
} }

Loading…
Cancel
Save