Browse Source

Make IStyleInstance internal.

Expose it for diagnostics via `AppliedStyle` wrapper.
pull/11436/head
Steven Kirk 3 years ago
parent
commit
54b8a55588
  1. 18
      src/Avalonia.Base/Diagnostics/AppliedStyle.cs
  2. 4
      src/Avalonia.Base/Diagnostics/StyleDiagnostics.cs
  3. 4
      src/Avalonia.Base/StyledElement.cs
  4. 3
      src/Avalonia.Base/Styling/IStyleInstance.cs
  5. 2
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs
  6. 4
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/StyleViewModel.cs

18
src/Avalonia.Base/Diagnostics/AppliedStyle.cs

@ -0,0 +1,18 @@
using Avalonia.Styling;
namespace Avalonia.Diagnostics
{
public class AppliedStyle
{
private readonly IStyleInstance _instance;
internal AppliedStyle(IStyleInstance instance)
{
_instance = instance;
}
public bool HasActivator => _instance.HasActivator;
public bool IsActive => _instance.IsActive;
public StyleBase Style => (StyleBase)_instance.Source;
}
}

4
src/Avalonia.Base/Diagnostics/StyleDiagnostics.cs

@ -11,9 +11,9 @@ namespace Avalonia.Diagnostics
/// <summary>
/// Currently applied styles.
/// </summary>
public IReadOnlyList<IStyleInstance> AppliedStyles { get; }
public IReadOnlyList<AppliedStyle> AppliedStyles { get; }
public StyleDiagnostics(IReadOnlyList<IStyleInstance> appliedStyles)
public StyleDiagnostics(IReadOnlyList<AppliedStyle> appliedStyles)
{
AppliedStyles = appliedStyles;
}

4
src/Avalonia.Base/StyledElement.cs

@ -420,12 +420,12 @@ namespace Avalonia
internal StyleDiagnostics GetStyleDiagnosticsInternal()
{
var styles = new List<IStyleInstance>();
var styles = new List<AppliedStyle>();
foreach (var frame in GetValueStore().Frames)
{
if (frame is IStyleInstance style)
styles.Add(style);
styles.Add(new(style));
}
return new StyleDiagnostics(styles);

3
src/Avalonia.Base/Styling/IStyleInstance.cs

@ -5,8 +5,7 @@ namespace Avalonia.Styling
/// <summary>
/// Represents a <see cref="Style"/> that has been instanced on a control.
/// </summary>
[Unstable]
public interface IStyleInstance
internal interface IStyleInstance
{
/// <summary>
/// Gets the source style.

2
src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs

@ -64,7 +64,7 @@ namespace Avalonia.Diagnostics.ViewModels
// We need to place styles without activator first, such styles will be overwritten by ones with activators.
foreach (var appliedStyle in styleDiagnostics.AppliedStyles.OrderBy(s => s.HasActivator))
{
var styleSource = appliedStyle.Source;
var styleSource = appliedStyle.Style;
var setters = new List<SetterViewModel>();

4
src/Avalonia.Diagnostics/Diagnostics/ViewModels/StyleViewModel.cs

@ -5,11 +5,11 @@ namespace Avalonia.Diagnostics.ViewModels
{
internal class StyleViewModel : ViewModelBase
{
private readonly IStyleInstance _styleInstance;
private readonly AppliedStyle _styleInstance;
private bool _isActive;
private bool _isVisible;
public StyleViewModel(IStyleInstance styleInstance, string name, List<SetterViewModel> setters)
public StyleViewModel(AppliedStyle styleInstance, string name, List<SetterViewModel> setters)
{
_styleInstance = styleInstance;
IsVisible = true;

Loading…
Cancel
Save