Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/Controls/src/Core/FontImageSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
namespace Microsoft.Maui.Controls
{
/// <include file="../../docs/Microsoft.Maui.Controls/FontImageSource.xml" path="Type[@FullName='Microsoft.Maui.Controls.FontImageSource']/Docs/*" />
[ContentProperty(nameof(Glyph))]
public partial class FontImageSource : ImageSource
{
/// <include file="../../docs/Microsoft.Maui.Controls/FontImageSource.xml" path="//Member[@MemberName='IsEmpty']/Docs/*" />
Expand Down
31 changes: 4 additions & 27 deletions src/Controls/src/Xaml/MarkupExtensions/FontImageExtension.cs
Original file line number Diff line number Diff line change
@@ -1,33 +1,10 @@
using System;
using Microsoft.Maui.Graphics;

namespace Microsoft.Maui.Controls.Xaml
{
[AcceptEmptyServiceProvider]
[ContentProperty(nameof(Glyph))]
public class FontImageExtension : IMarkupExtension<ImageSource>
{
public string FontFamily { get; set; }
public string Glyph { get; set; }
public Color Color { get; set; }

[System.ComponentModel.TypeConverter(typeof(FontSizeConverter))]
public double Size { get; set; } = (double)FontImageSource.SizeProperty.DefaultValue;
namespace Microsoft.Maui.Controls.Xaml;

public ImageSource ProvideValue(IServiceProvider serviceProvider)
{
return new FontImageSource
{
FontFamily = FontFamily,
Glyph = Glyph,
Color = Color,
Size = Size
};
}
[Obsolete("Use FontImageSource")]
public class FontImageExtension : FontImageSource
{

object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
{
return (this as IMarkupExtension<ImageSource>).ProvideValue(serviceProvider);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,12 @@ Microsoft.Maui.Controls.Embedding.EmbeddingExtensions
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider.ValueTargetProvider(object! targetObject, object! targetProperty) -> void
Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.get -> Microsoft.Maui.Graphics.Color
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.ProvideValue(System.IServiceProvider serviceProvider) -> Microsoft.Maui.Controls.ImageSource
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.get -> double
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.set -> void
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,12 @@ Microsoft.Maui.Controls.Embedding.EmbeddingExtensions
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider.ValueTargetProvider(object! targetObject, object! targetProperty) -> void
Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.get -> Microsoft.Maui.Graphics.Color
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.ProvideValue(System.IServiceProvider serviceProvider) -> Microsoft.Maui.Controls.ImageSource
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.get -> double
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.set -> void
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,12 @@ Microsoft.Maui.Controls.Embedding.EmbeddingExtensions
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider.ValueTargetProvider(object! targetObject, object! targetProperty) -> void
Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.get -> Microsoft.Maui.Graphics.Color
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.ProvideValue(System.IServiceProvider serviceProvider) -> Microsoft.Maui.Controls.ImageSource
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.get -> double
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.set -> void
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,12 @@ Microsoft.Maui.Controls.Embedding.EmbeddingExtensions
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider.ValueTargetProvider(object! targetObject, object! targetProperty) -> void
Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.get -> Microsoft.Maui.Graphics.Color
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.ProvideValue(System.IServiceProvider serviceProvider) -> Microsoft.Maui.Controls.ImageSource
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.get -> double
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.set -> void
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,12 @@ Microsoft.Maui.Controls.Embedding.EmbeddingExtensions
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider.ValueTargetProvider(object! targetObject, object! targetProperty) -> void
Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.get -> Microsoft.Maui.Graphics.Color
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.ProvideValue(System.IServiceProvider serviceProvider) -> Microsoft.Maui.Controls.ImageSource
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.get -> double
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.set -> void
9 changes: 9 additions & 0 deletions src/Controls/src/Xaml/PublicAPI/net/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,12 @@ Microsoft.Maui.Controls.Embedding.EmbeddingExtensions
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider.ValueTargetProvider(object! targetObject, object! targetProperty) -> void
Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.get -> Microsoft.Maui.Graphics.Color
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.ProvideValue(System.IServiceProvider serviceProvider) -> Microsoft.Maui.Controls.ImageSource
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.get -> double
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.set -> void
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,12 @@ Microsoft.Maui.Controls.Embedding.EmbeddingExtensions
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider
Microsoft.Maui.Controls.Xaml.Internals.ValueTargetProvider.ValueTargetProvider(object! targetObject, object! targetProperty) -> void
Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.get -> Microsoft.Maui.Graphics.Color
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Color.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.FontFamily.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.get -> string
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.Glyph.set -> void
*REMOVED*~Microsoft.Maui.Controls.Xaml.FontImageExtension.ProvideValue(System.IServiceProvider serviceProvider) -> Microsoft.Maui.Controls.ImageSource
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.get -> double
*REMOVED*Microsoft.Maui.Controls.Xaml.FontImageExtension.Size.set -> void
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public void FontImageExtension_Positive(bool useCompiledXaml)
if (myTab == null)
continue;

Assert.That(myTab.Icon, Is.TypeOf<FontImageSource>());
Assert.That(myTab.Icon, Is.InstanceOf<FontImageSource>());

var fontImage = (FontImageSource)myTab.Icon;
Assert.AreEqual(FontFamily, fontImage.FontFamily);
Expand Down
24 changes: 24 additions & 0 deletions src/Controls/tests/Xaml.UnitTests/Issues/Maui23347.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Microsoft.Maui.Controls.Xaml.UnitTests.Maui23347">
<StackLayout>
<Button x:Name="button0"
Text="Comment"
Background="Transparent"
TextColor="{AppThemeBinding Light=Black, Dark=White}"
ImageSource="{FontImageSource Glyph=MyGlyph, Color={AppThemeBinding Light=Black, Dark=White}, FontFamily=FontAwesome, Size=18}" />
<Button x:Name="button1"
Text="Comment"
Background="Transparent"
TextColor="{AppThemeBinding Light=Black, Dark=White}" >
<Button.ImageSource>
<FontImageSource Glyph="MyGlyph"
Color="{AppThemeBinding Light=Black, Dark=White}"
FontFamily="FontAwesome"
Size="18" />
</Button.ImageSource>
</Button>
</StackLayout>

</ContentPage>
43 changes: 43 additions & 0 deletions src/Controls/tests/Xaml.UnitTests/Issues/Maui23347.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
using System;
using System.Threading.Tasks;
using Microsoft.Maui.ApplicationModel;
using Microsoft.Maui.Controls.Core.UnitTests;
using Microsoft.Maui.Dispatching;
using Microsoft.Maui.UnitTests;
using NUnit.Framework;

namespace Microsoft.Maui.Controls.Xaml.UnitTests;

public partial class Maui23347
{
public Maui23347()
{
InitializeComponent();
}

public Maui23347(bool useCompiledXaml)
{
//this stub will be replaced at compile time
}

[TestFixture]
class Test
{
[SetUp]
public void Setup()
{
Application.SetCurrentApplication(new MockApplication());
DispatcherProvider.SetCurrent(new DispatcherProviderStub());
}

[TearDown] public void TearDown() => AppInfo.SetCurrent(null);

[Test]
public void FontImageSourceIssue([Values(false, true)] bool useCompiledXaml)
{
Application.Current.UserAppTheme = AppTheme.Light;
var page = new Maui23347(useCompiledXaml);
Application.Current.MainPage = page;
}
}
}