From b4cf0dedd4ab865bb81d19caaaa663fd3a3b3b51 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Sun, 23 Jul 2017 16:48:11 +0300 Subject: [PATCH 1/9] Updated portablexaml --- .gitmodules | 2 +- .../Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index bdd5d5ca4d..6e9b10efa4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,4 +7,4 @@ branch = perspex-pcl [submodule "src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github"] path = src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github - url = https://github.com/cwensley/Portable.Xaml.git + url = https://github.com/AvaloniaUI/Portable.Xaml.git diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github index d50730ab59..dc333ff66e 160000 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github @@ -1 +1 @@ -Subproject commit d50730ab59aed99cd2f8aeb4975fcc19d23bb54f +Subproject commit dc333ff66eb1fdd8565e9b831718791675ec569b From 5bedcd226630b7281de78d23eeee5a5deb230138 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Sun, 23 Jul 2017 18:14:37 +0300 Subject: [PATCH 2/9] Fixes to get Avalonia.Behaviors working again --- build/Markup.props | 1 + packages.cake | 2 +- .../Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs | 2 +- .../Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/build/Markup.props b/build/Markup.props index 0e4baf5da9..5be0cfbf0c 100644 --- a/build/Markup.props +++ b/build/Markup.props @@ -9,5 +9,6 @@ + diff --git a/packages.cake b/packages.cake index 5f268188dc..1f37461da7 100644 --- a/packages.cake +++ b/packages.cake @@ -248,7 +248,7 @@ public class Packages } .Deps(new string[]{null, "netcoreapp1.0"}, "System.ValueTuple", "System.ComponentModel.TypeConverter", "System.ComponentModel.Primitives", - "System.Runtime.Serialization.Primitives", "System.Xml.XmlDocument") + "System.Runtime.Serialization.Primitives", "System.Xml.XmlDocument", "System.Xml.ReaderWriter") .ToArray(), Files = coreLibrariesNuSpecContent .Concat(win32CoreLibrariesNuSpecContent).Concat(net45RuntimePlatform) diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs index 8fcde185b3..7b8c503edc 100644 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs @@ -331,7 +331,7 @@ namespace Avalonia.Markup.Xaml.PortableXaml public override object GetValue(object instance) { - if (Property != null) + if (Property != null && !Property.IsAttached) { return ((IAvaloniaObject)instance).GetValue(Property); } diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github index dc333ff66e..926e82551c 160000 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github @@ -1 +1 @@ -Subproject commit dc333ff66eb1fdd8565e9b831718791675ec569b +Subproject commit 926e82551c10591f2fa3afb25121ac2d16b272c6 From c7d1af7f85a7b92e694e840d38a1a4612f7a6c89 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Sun, 23 Jul 2017 19:03:07 +0300 Subject: [PATCH 3/9] Fixed double/float values in Setter.Value when running with cultures with "," as delimiter --- .../Converters/SetterValueTypeConverter.cs | 6 +++--- .../Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/Converters/SetterValueTypeConverter.cs b/src/Markup/Avalonia.Markup.Xaml/Converters/SetterValueTypeConverter.cs index 931d4e2ffc..81cda6db1f 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Converters/SetterValueTypeConverter.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Converters/SetterValueTypeConverter.cs @@ -23,11 +23,11 @@ namespace Avalonia.Markup.Xaml.Converters object setter = context.GetService().TargetObject; var schemaContext = context.GetService().SchemaContext; - return ConvertSetterValue(schemaContext, (setter as Setter), value); + return ConvertSetterValue(context, schemaContext, culture, (setter as Setter), value); } [Obsolete("TODO: try assosiate Setter.Value property with SetterValueTypeConverter, so far coouldn't make it :(")] - internal static object ConvertSetterValue(XamlSchemaContext context, Setter setter, object value) + internal static object ConvertSetterValue(ITypeDescriptorContext dcontext, XamlSchemaContext context, CultureInfo info, Setter setter, object value) { Type targetType = setter?.Property?.PropertyType; @@ -40,7 +40,7 @@ namespace Avalonia.Markup.Xaml.Converters if (ttConv != null) { - value = ttConv.ConvertFromString(value as string); + value = ttConv.ConvertFromString(dcontext, info, value as string); } return value; diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs index 7b8c503edc..71c8902cbd 100644 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlType.cs @@ -8,6 +8,7 @@ using Portable.Xaml.Schema; using System; using System.Collections; using System.Collections.Generic; +using System.Globalization; using System.Reflection; using System.Xml.Serialization; @@ -203,8 +204,8 @@ namespace Avalonia.Markup.Xaml.PortableXaml Member.Name == nameof(Setter.Value) && value is string) { - value = SetterValueTypeConverter.ConvertSetterValue( - Member.DeclaringType.SchemaContext, + value = SetterValueTypeConverter.ConvertSetterValue(null, + Member.DeclaringType.SchemaContext, CultureInfo.InvariantCulture, instance as Setter, value); } From f63d5dad9358418839a14b93a8f7799932ce9f5a Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Sun, 23 Jul 2017 21:29:43 +0300 Subject: [PATCH 4/9] Fixed bug with null values from markup extensions --- .../PortableXaml/AvaloniaXamlObjectWriter.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs index f10de1a32f..860dbfec39 100644 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs @@ -88,8 +88,8 @@ namespace Avalonia.Markup.Xaml.PortableXaml //Portable.Xaml.ComponentModel.ISupportInitialize //and we have Avalonia.ISupportInitialize so we need some hacks HandleBeginInit(value); - - _delayedValuesHelper.BeginInit(value); + if (value != null) + _delayedValuesHelper.BeginInit(value); base.OnBeforeProperties(value); } From d135663062218fb3e230f1902dc2ef15659dbff7 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Sun, 23 Jul 2017 22:40:45 +0300 Subject: [PATCH 5/9] Hack to fix Begin/EndInit bug caused by DelayedValuesHelper --- .../AvaloniaXamlLoaderPortableXaml.cs | 2 +- .../PortableXaml/AvaloniaXamlObjectWriter.cs | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs index c49797f2f8..0419db5d0f 100644 --- a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs +++ b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs @@ -189,7 +189,7 @@ namespace Avalonia.Markup.Xaml context); XamlServices.Transform(reader, writer); - + writer.ApplyAllDelayedProperties(); return writer.Result; } diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs index 860dbfec39..e0e2553f46 100644 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaXamlObjectWriter.cs @@ -54,6 +54,12 @@ namespace Avalonia.Markup.Xaml.PortableXaml base.Dispose(disposing); } + public void ApplyAllDelayedProperties() + { + //HACK: We need this because Begin/EndInit ordering is broken + _delayedValuesHelper.ApplyAll(); + } + protected internal override void OnAfterBeginInit(object value) { //not called for avalonia objects @@ -137,7 +143,7 @@ namespace Avalonia.Markup.Xaml.PortableXaml if (_cnt == 0) { - EndInit(); + ApplyAll(); } } @@ -174,7 +180,7 @@ namespace Avalonia.Markup.Xaml.PortableXaml } } - private void EndInit() + public void ApplyAll() { //TODO: revisit this //apply delayed values and clear From cdc1ddcc392648bea28eaf84e70f95166c075db3 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Wed, 26 Jul 2017 06:47:44 +0300 Subject: [PATCH 6/9] Updated Portable.Xaml --- .../Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github index 926e82551c..7b4d5cb404 160000 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github @@ -1 +1 @@ -Subproject commit 926e82551c10591f2fa3afb25121ac2d16b272c6 +Subproject commit 7b4d5cb4045e02e0bec7e9e8179d19b79c118621 From 502e605d87b05d6062a512a82a63bd107f0f522e Mon Sep 17 00:00:00 2001 From: t-jekor Date: Thu, 27 Jul 2017 14:18:26 -0700 Subject: [PATCH 7/9] Revert "Updated Portable.Xaml" This reverts commit cdc1ddcc392648bea28eaf84e70f95166c075db3. --- .../Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github index 7b4d5cb404..926e82551c 160000 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github @@ -1 +1 @@ -Subproject commit 7b4d5cb4045e02e0bec7e9e8179d19b79c118621 +Subproject commit 926e82551c10591f2fa3afb25121ac2d16b272c6 From 73076f375b82d79a0f54161db1896d20245f716d Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 27 Jul 2017 19:17:58 -0700 Subject: [PATCH 8/9] Updated Portable.Xaml submodule --- .../Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github index 926e82551c..639852538b 160000 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github @@ -1 +1 @@ -Subproject commit 926e82551c10591f2fa3afb25121ac2d16b272c6 +Subproject commit 639852538ba63da1550f5d28aa7ca4a2185b312a From 88f9b56a71ef2566df3ea1da554c131f89e67321 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 27 Jul 2017 19:17:58 -0700 Subject: [PATCH 9/9] Updated Portable.Xaml submodule --- .../Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github index 926e82551c..dfc5affa5d 160000 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github @@ -1 +1 @@ -Subproject commit 926e82551c10591f2fa3afb25121ac2d16b272c6 +Subproject commit dfc5affa5d8f4ddf5a7707e3202d5593519de640