Removed test

Removed test

It wasn't right.

--- tests/Perspex.Controls.UnitTests/DropDownTests.cs
+++ tests/Perspex.Controls.UnitTests/DropDownTests.cs
@@ -15,19 +15,6 @@
 {
     public class DropDownTests
     {
-        [Fact(Skip = "Need to decide if this is right")]
-        public void Logical_Children_Should_Be_Children_Of_Container()
-        {
-            var target = new DropDown();
-
-            target.Template = GetTemplate();
-            target.ApplyTemplate();
-
-            var childIds = ((ILogical)target).LogicalChildren.Cast<Control>().Select(x => x.Name);
-
-            Assert.Equal(new[] { "contentControl", "toggle", "popup" }, childIds);
-        }
-
         private FuncControlTemplate GetTemplate()
         {
             return new FuncControlTemplate<DropDown>(parent =>


Test call vs callvirt without fixed {}. Only interfaces add visible overhead.

Value 1820 (1000000000)
Struct 1813
Struct as Interface 4004
Static Class 1820
Class 1809
Sealed Class 1846
Class as Interface 2727
Derived Class 2408
Derived Class as Interface 2692
Sealed Derived Class 2090
Sealed Derived Class as Interface 2688

--- tests/Spreads.Core.Tests/NanoOptimizationTests.cs
+++ tests/Spreads.Core.Tests/NanoOptimizationTests.cs
@@ -24,45 +24,58 @@

         public struct ThisIsSrtuct : IIncrementable {
             private byte[] value;
+            private int* ptr;
+            private GCHandle pinnedGcHandle;

             public ThisIsSrtuct(byte[] bytes) {
                 value = bytes;
-            }
-            [MethodImpl(MethodImplOptions.AggressiveInlining)]
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = (int*)pinnedGcHandle.AddrOfPinnedObject().ToPointer();
+            }
+
             public int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+                //return (*((int*)ptr))++;
             }

         }

         public static class ThisIsStaticClass {
             private static byte[] value = new byte[4];
+            private static IntPtr ptr;
+            private static GCHandle pinnedGcHandle;
+
+            static ThisIsStaticClass() {
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = pinnedGcHandle.AddrOfPinnedObject();
+            }

             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public static int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+
             }

         }

         public class ThisIsClass : IIncrementable {
             private byte[] value = new byte[4];
+            private IntPtr ptr;
+            private GCHandle pinnedGcHandle;
+
+            public ThisIsClass() {
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = pinnedGcHandle.AddrOfPinnedObject();
+            }
+

             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+
             }

         }
@@ -71,81 +84,115 @@

         public class ThisIsBaseClass : IIncrementable {
             private byte[] value = new byte[4];
+            private IntPtr ptr;
+            private GCHandle pinnedGcHandle;
+
+            public ThisIsBaseClass() {
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = pinnedGcHandle.AddrOfPinnedObject();
+            }
+

             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public virtual int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
-            }
-
-
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+
+            }
         }

         public class ThisIsDerivedClass : ThisIsBaseClass, IIncrementable {
             private byte[] value = new byte[4];
+            private IntPtr ptr;
+            private GCHandle pinnedGcHandle;
+
+            public ThisIsDerivedClass() {
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = pinnedGcHandle.AddrOfPinnedObject();
+            }
+

             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public override int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+
             }
         }

         public class ThisIsDerivedClass2 : ThisIsBaseClass, IIncrementable {
             private byte[] value = new byte[4];
+            private IntPtr ptr;
+            private GCHandle pinnedGcHandle;
+
+            public ThisIsDerivedClass2() {
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = pinnedGcHandle.AddrOfPinnedObject();
+            }
+

             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public override int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+
             }
         }

         public sealed class ThisIsSealedDerivedClass : ThisIsDerivedClass, IIncrementable {
             private byte[] value = new byte[4];
+            private IntPtr ptr;
+            private GCHandle pinnedGcHandle;
+
+            public ThisIsSealedDerivedClass() {
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = pinnedGcHandle.AddrOfPinnedObject();
+            }
+

             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public override int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+
             }
         }

         public sealed class ThisIsSealedDerivedClass2 : ThisIsDerivedClass, IIncrementable {
             private byte[] value = new byte[4];
+            private IntPtr ptr;
+            private GCHandle pinnedGcHandle;
+
+            public ThisIsSealedDerivedClass2() {
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = pinnedGcHandle.AddrOfPinnedObject();
+            }
+

             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public override int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+
             }
         }

         public sealed class ThisIsSealedClass : IIncrementable {
             private byte[] value = new byte[4];
+            private IntPtr ptr;
+            private GCHandle pinnedGcHandle;
+
+            public ThisIsSealedClass() {
+                pinnedGcHandle = GCHandle.Alloc(value, GCHandleType.Pinned);
+                ptr = pinnedGcHandle.AddrOfPinnedObject();
+            }
+

             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public int Increment() {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    return (*((int*)ptr));
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                return (*((int*)ptr));
+
             }
         }

@@ -155,14 +202,13 @@
             var sw = new Stopwatch();

             sw.Restart();
-            byte[] value = new byte[4];
+            int* ptr = stackalloc int[1];
+
+
             int intValue = 0;
             for (int i = 0; i < count; i++) {
-                fixed (byte* ptr = &value[0])
-                {
-                    *((int*)ptr) = *((int*)ptr) + 1;
-                    intValue = *((int*) ptr);
-                }
+                *((int*)ptr) = *((int*)ptr) + 1;
+                intValue = (*((int*)ptr));
             }
             sw.Stop();
             Console.WriteLine($"Value {sw.ElapsedMilliseconds} ({intValue})");


Add additional comment.

Add additional comment.

--- UmbracoReady/UmbracoReady/App_Start/UmbracoCustomOwinStartup.cs
+++ UmbracoReady/UmbracoReady/App_Start/UmbracoCustomOwinStartup.cs
@@ -91,13 +91,13 @@
             var identityOptions
                 = new OpenIdConnectAuthenticationOptions
                     {
-                        ClientId                    = "UmbracoReadyDemo",
+                        ClientId                    = "UmbracoReadyDemo",       // This client has already been registered. You may register more via https://members.readysignon.com
                         Caption                     = "Umbraco Ready",
                         ResponseType                = "code id_token token",    // This corresponds to the Hybrid Flow outlined in oidc core spec 1.0.
                         Scope                       = "openid profile application.profile rso_rid",   // When rso_rid is absent, rso_idp is used.
-                        SignInAsAuthenticationType = Constants.Security.BackOfficeExternalAuthenticationType,
+                        SignInAsAuthenticationType  = Constants.Security.BackOfficeExternalAuthenticationType,
                         Authority                   = "https://members.readysignon.com/",
-                        RedirectUri                 = "http://localhost:5198/Umbraco",
+                        RedirectUri                 = "http://localhost:5198/Umbraco",      // This cannot be change unless you use a different client registration created at https://members.readysignon.com
                         PostLogoutRedirectUri       = "http://localhost:5198/Umbraco",
                     };

@@ -127,9 +127,9 @@
                     {
                         SecurityTokenValidated = ClaimsTransformer.GenerateUserIdentityAsync,       // See code of ClaimsTransformer class for details.

-                        RedirectToIdentityProvider = ctx =>
+                        RedirectToIdentityProvider = n =>
                         {
-                            ctx.ProtocolMessage.IdentityProvider = identityOptions.Authority;       // The IdP will decide its own best url if this is not set here.
+                            n.ProtocolMessage.IdentityProvider = identityOptions.Authority;       // The IdP will decide its own best url if this is not set here.
                             return Task.FromResult(0);
                         }
                     };


more Optimisation

more Optimisation


Fix SpendTx

Fix SpendTx

--- WalletWasabi.Gui/Controls/WalletExplorer/HistoryTabViewModel.cs
+++ WalletWasabi.Gui/Controls/WalletExplorer/HistoryTabViewModel.cs
@@ -77,7 +77,7 @@

 				if (coin.SpenderTransactionId != null)
 				{
-					txRecordList.Add((coin.Confirmed, (Money.Zero - coin.Amount), coin.Label, coin.TransactionId));
+					txRecordList.Add((coin.Confirmed, (Money.Zero - coin.Amount), coin.Label, coin.SpenderTransactionId));
 				}
 			}


Add support to lookup root dependencies when the guid is blank.

--- uSync8.BackOffice/SyncHandlers/SyncHandlerRoot.cs
+++ uSync8.BackOffice/SyncHandlers/SyncHandlerRoot.cs
@@ -1114,8 +1114,15 @@
         }
         public IEnumerable<uSyncDependency> GetDependencies(Guid key, DependencyFlags flags)
         {
-            var item = this.GetFromService(key);
-            return GetDependencies(item, flags);
+            if (key == Guid.Empty)
+            {
+                return GetContainerDependencies(default, flags);
+            }
+            else
+            {
+                var item = this.GetFromService(key);
+                return GetDependencies(item, flags);
+            }
         }

         public IEnumerable<uSyncDependency> GetDependencies(int id, DependencyFlags flags)


[Modify] Polish it

[Modify] Polish it

--- websocket-sharp/Server/WebSocketServiceManager.cs
+++ websocket-sharp/Server/WebSocketServiceManager.cs
@@ -47,8 +47,8 @@
   {
     #region Private Fields

+    private Dictionary<string, WebSocketServiceHost> _hosts;
     private volatile bool                            _keepClean;
-    private Dictionary<string, WebSocketServiceHost> _hosts;
     private Logger                                   _log;
     private volatile ServerState                     _state;
     private object                                   _sync;


[Modify] Polish it

[Modify] Polish it

--- websocket-sharp/Server/WebSocketSessionManager.cs
+++ websocket-sharp/Server/WebSocketSessionManager.cs
@@ -1066,8 +1066,10 @@
     public bool PingTo (string id)
     {
       IWebSocketSession session;
+
       if (!TryGetSession (id, out session)) {
         var msg = "The session could not be found.";
+
         throw new InvalidOperationException (msg);
       }


Add traits to unit tests to be skipped by TeamCity

--- src/Arkivverket.Arkade.Core.Tests/Util/DiasValidation/DiasValidatorTests.cs
+++ src/Arkivverket.Arkade.Core.Tests/Util/DiasValidation/DiasValidatorTests.cs
@@ -13,6 +13,7 @@
     public class DiasValidatorTests
     {
         [Fact]
+        [Trait("Dependency", "IO")]
         public void ShouldValidateN5SipDirectory()
         {
             DiasDirectory diasDirectory = DiasProvider.ProvideForFormat(ArchiveFormat.DiasSipN5);
@@ -28,6 +29,7 @@
         }

         [Fact]
+        [Trait("Dependency", "IO")]
         public void ShouldInvalidateN5SipDirectory()
         {
             DiasDirectory diasDirectory = DiasProvider.ProvideForFormat(ArchiveFormat.DiasSip);
@@ -46,6 +48,7 @@
         }

         [Fact]
+        [Trait("Dependency", "IO")]
         public void ShouldValidateN5SipZipArchive()
         {
             DiasEntry[] diasEntries = DiasProvider.ProvideForFormat(ArchiveFormat.DiasSipN5).GetEntries();
@@ -59,6 +62,7 @@
         }

         [Fact]
+        [Trait("Dependency", "IO")]
         public void ShouldInvalidateN5SipZipArchive()
         {
             DiasEntry[] diasEntries = DiasProvider.ProvideForFormat(ArchiveFormat.DiasSip).GetEntries();
@@ -75,6 +79,7 @@
         }

         [Fact]
+        [Trait("Dependency", "IO")]
         public void ShouldReportInvalidButAcceptableDias()
         {
             DiasDirectory diasSource = DiasProvider.ProvideForFormat(ArchiveFormat.DiasSipN5);


Fixed beats Next registeration extensions

--- src/Booma.Proxy.Client.Unity.Common/Extensions/BeatsEventQueueExtensions.cs
+++ src/Booma.Proxy.Client.Unity.Common/Extensions/BeatsEventQueueExtensions.cs
@@ -21,7 +21,6 @@
 			if(action == null) throw new ArgumentNullException(nameof(action));

 			//Registers the event to happen on the next beat.
-			beatQueue.RegisterEvent(TimeService.CurrentBeatsTime % 1d, action);
 		}

 		/// <summary>
@@ -35,7 +34,6 @@

 			//This should basically fire instantly
 			//Registers the event to happen on the next beat.
-			beatQueue.RegisterEvent(TimeService.CurrentBeatsTime % 0.01d, action);
 		}

 		/// <summary>


Add test for 30862

Add test for 30862

--- src/Compilers/CSharp/Test/Semantic/Semantics/NullableReferenceTypesTests.cs
+++ src/Compilers/CSharp/Test/Semantic/Semantics/NullableReferenceTypesTests.cs
@@ -418,6 +418,42 @@
                 // (11,11): warning CS8604: Possible null reference argument for parameter 'x' in 'void Program.F(object x)'.
                 //         F(y); // warning
                 Diagnostic(ErrorCode.WRN_NullReferenceArgument, "y").WithArguments("x", "void Program.F(object x)").WithLocation(11, 11));
+        }
+
+        [WorkItem(30862, "https://github.com/dotnet/roslyn/issues/30862")]
+        [Fact]
+        public void DirectiveDisableWarningEnable()
+        {
+            var source =
+@"#nullable enable
+class Program
+{
+    static void F(object x)
+    {
+    }
+#nullable disable
+    static void F1(object? y, object? z)
+    {
+        F(y);
+#pragma warning restore 8604
+        F(z); // 1
+    }
+    static void F2(object? w)
+    {
+        F(w); // 2
+    }
+}";
+            var comp = CreateCompilation(source);
+            comp.VerifyDiagnostics(
+                // (8,26): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' context.
+                //     static void F1(object? y, object? z)
+                Diagnostic(ErrorCode.WRN_MissingNonNullTypesContextForAnnotation, "?").WithLocation(8, 26),
+                // (8,37): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' context.
+                //     static void F1(object? y, object? z)
+                Diagnostic(ErrorCode.WRN_MissingNonNullTypesContextForAnnotation, "?").WithLocation(8, 37),
+                // (14,26): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' context.
+                //     static void F2(object? w)
+                Diagnostic(ErrorCode.WRN_MissingNonNullTypesContextForAnnotation, "?").WithLocation(14, 26));
         }

         [Fact, WorkItem(29318, "https://github.com/dotnet/roslyn/issues/29318")]


fix bug.

fix bug.

--- src/EQueue/Broker/Storage/FileNamingStrategies/DefaultFileNamingStrategy.cs
+++ src/EQueue/Broker/Storage/FileNamingStrategies/DefaultFileNamingStrategy.cs
@@ -45,7 +45,7 @@
         {
             var files = Directory
                             .EnumerateFiles(path)
-                            .Where(x => _fileNamePattern.IsMatch(Path.GetFileName(x)) && !x.EndsWith(".tmp"))
+                            .Where(x => _fileNamePattern.IsMatch(Path.GetFileName(x)) && x.EndsWith(".tmp"))
                             .OrderBy(x => x, StringComparer.CurrentCultureIgnoreCase)
                             .ToArray();
             return files;


Fix comment

Fix comment

--- src/EditorFeatures/Core/Implementation/Suggestions/FixAllSuggestedAction.cs
+++ src/EditorFeatures/Core/Implementation/Suggestions/FixAllSuggestedAction.cs
@@ -28,7 +28,7 @@
         /// <summary>
         /// The original code-action that we are a fix-all for.  i.e. _originalCodeAction
         /// would be something like "use 'var' instead of 'int'", this suggestion action
-        /// and our <see cref="SuggestedAction.CodeAction"/> is the actual actual that
+        /// and our <see cref="SuggestedAction.CodeAction"/> is the actual action that
         /// will perform the fix in the appropriate document/project/solution scope.
         /// </summary>
         private readonly CodeAction _originalCodeAction;


Change proxy URIs for Amazon

Change proxy URIs for Amazon

Generalizing the services/proxy stuff for other stores/services.

--- src/Extensions/Banshee.AmazonMp3.Store/Banshee.AmazonMp3.Store/StoreView.cs
+++ src/Extensions/Banshee.AmazonMp3.Store/Banshee.AmazonMp3.Store/StoreView.cs
@@ -49,7 +49,7 @@
         public StoreView ()
         {
             CanSearch = true;
-            FixupJavascriptUrl = "http://amz-proxy.banshee.fm/amz-fixups.js";
+            FixupJavascriptUrl = "http://integrated-services.banshee.fm/amz/amz-fixups.js";

             OssiferSession.CookieChanged += (o, n) => CheckSignIn ();

@@ -113,12 +113,12 @@

         public override void GoHome ()
         {
-            LoadUri ("http://amz-proxy.banshee.fm/do/home/");
+            LoadUri ("http://integrated-services.banshee.fm/amz/do/home/");
         }

         public override void GoSearch (string query)
         {
-            LoadUri (new Uri ("http://amz-proxy.banshee.fm/do/search/" + query).AbsoluteUri);
+            LoadUri (new Uri ("http://integrated-services.banshee.fm/amz/do/search/" + query).AbsoluteUri);
         }

         public void SignOut ()


ensure static resource can implicitly convert to brush when used in setters.

--- src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/StaticResourceExtension.cs
+++ src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/StaticResourceExtension.cs
@@ -5,6 +5,7 @@
 using Avalonia.Markup.Data;
 using Avalonia.Markup.Xaml.Converters;
 using Avalonia.Markup.Xaml.XamlIl.Runtime;
+using Avalonia.Styling;

 namespace Avalonia.Markup.Xaml.MarkupExtensions
 {
@@ -32,6 +33,11 @@
                 PropertyInfo pi => pi.PropertyType,
                 _ => null,
             };
+
+            if (provideTarget.TargetObject is Setter setter)
+            {
+                targetType = setter.Property.PropertyType;
+            }

             // Look upwards though the ambient context for IResourceHosts and IResourceProviders
             // which might be able to give us the resource.


Fix a problem with 'fixed' variables due to cleanup

--- src/Microsoft.Diagnostics.Runtime/src/Debugger/Structs/DebugStackFrameEx.cs
+++ src/Microsoft.Diagnostics.Runtime/src/Debugger/Structs/DebugStackFrameEx.cs
@@ -31,10 +31,15 @@
             FrameOffset = dsf.FrameOffset;
             StackOffset = dsf.StackOffset;
             FuncTableEntry = dsf.FuncTableEntry;
-            for (int i = 0; i < 4; ++i)
-                Params[i] = dsf.Params[i];
-            for (int i = 0; i < 6; ++i)
-                Reserved[i] = dsf.Reserved[i];
+
+            fixed (ulong* pParams = Params)
+                for (int i = 0; i < 4; ++i)
+                    pParams[i] = dsf.Params[i];
+
+            fixed (ulong* pReserved = Params)
+                for (int i = 0; i < 6; ++i)
+                    pReserved[i] = dsf.Reserved[i];
+
             Virtual = dsf.Virtual;
             FrameNumber = dsf.FrameNumber;
             InlineFrameContext = 0xFFFFFFFF;


Update KeyValuePairsComparer.cs

Update KeyValuePairsComparer.cs

--- src/NUnitFramework/framework/Constraints/Comparers/KeyValuePairsComparer.cs
+++ src/NUnitFramework/framework/Constraints/Comparers/KeyValuePairsComparer.cs
@@ -3,8 +3,6 @@
 #nullable enable
 using System;
 using System.Collections.Generic;
-using System.Reflection;
-using NUnit.Compatibility;

 namespace NUnit.Framework.Constraints.Comparers
 {
@@ -19,8 +17,8 @@
             Type xType = x.GetType();
             Type yType = y.GetType();

-            Type? xGenericTypeDefinition = xType.GetTypeInfo().IsGenericType ? xType.GetGenericTypeDefinition() : null;
-            Type? yGenericTypeDefinition = yType.GetTypeInfo().IsGenericType ? yType.GetGenericTypeDefinition() : null;
+            Type? xGenericTypeDefinition = xType.IsGenericType ? xType.GetGenericTypeDefinition() : null;
+            Type? yGenericTypeDefinition = yType.IsGenericType ? yType.GetGenericTypeDefinition() : null;

             if (xGenericTypeDefinition != typeof(KeyValuePair<,>) ||
                 yGenericTypeDefinition != typeof(KeyValuePair<,>))


Fix 403 error when there is no Creatable Content Type set in ContentDefinitions. (#7493)

--- src/OrchardCore/OrchardCore.Contents.Core/AuthorizationServiceExtensions.cs
+++ src/OrchardCore/OrchardCore.Contents.Core/AuthorizationServiceExtensions.cs
@@ -16,22 +16,23 @@
         /// </summary>
         public static async Task<bool> AuthorizeContentTypeDefinitionsAsync(this IAuthorizationService service, ClaimsPrincipal user, Permission requiredPermission, IEnumerable<ContentTypeDefinition> contentTypeDefinitions, IContentManager contentManager)
         {
+            var permission = GetOwnerVariation(requiredPermission);
+            var contentTypePermission = ContentTypePermissionsHelper.ConvertToDynamicPermission(permission);
+
             foreach (var contentTypeDefinition in contentTypeDefinitions)
             {
-                var permission = GetOwnerVariation(requiredPermission);
-                var contentTypePermission = ContentTypePermissionsHelper.ConvertToDynamicPermission(permission);
-                permission = ContentTypePermissionsHelper.CreateDynamicPermission(contentTypePermission, contentTypeDefinition);
+                var dynamicPermission = ContentTypePermissionsHelper.CreateDynamicPermission(contentTypePermission, contentTypeDefinition);

                 var contentItem = await contentManager.NewAsync(contentTypeDefinition.Name);
                 contentItem.Owner = user.Identity.Name;

-                if (await service.AuthorizeAsync(user, permission, contentItem))
+                if (await service.AuthorizeAsync(user, dynamicPermission, contentItem))
                 {
                     return true;
                 }
             }

-            return false;
+            return await service.AuthorizeAsync(user, permission);
         }

         private static Permission GetOwnerVariation(Permission permission)


default parameter within trait fix

default parameter within trait fix

--- src/Peachpie.CodeAnalysis/Symbols/Synthesized/SynthesizedParameterSymbol.cs
+++ src/Peachpie.CodeAnalysis/Symbols/Synthesized/SynthesizedParameterSymbol.cs
@@ -83,7 +83,7 @@
                 //
                 if (newowner != fieldcontainer)
                 {
-                    defaultValueField = defaultValueField.AsMember(newowner);
+                    defaultValueField = defaultValueField.OriginalDefinition.AsMember(newowner);
                 }
             }


217: Clear()

217: Clear()

--- src/PixelFarm/PixelFarm.DrawingGL/DrawingGL/RenderSuface/GLRenderSurface.cs
+++ src/PixelFarm/PixelFarm.DrawingGL/DrawingGL/RenderSuface/GLRenderSurface.cs
@@ -219,7 +219,14 @@
             }
             _currentFrameBuffer = null;
         }
-
+        public void Clear()
+        {
+            GL.ClearStencil(0);
+            //actual clear here !
+            GL.Clear(ClearBufferMask.ColorBufferBit |
+                ClearBufferMask.DepthBufferBit |
+                ClearBufferMask.StencilBufferBit);
+        }
         public void Clear(PixelFarm.Drawing.Color c)
         {
             GL.ClearColor(


FN controller tests

FN controller tests

--- src/Stratis.Bitcoin.Features.RPC.Tests/Controller/FullNodeControllerTest.cs
+++ src/Stratis.Bitcoin.Features.RPC.Tests/Controller/FullNodeControllerTest.cs
@@ -9,6 +9,7 @@
 using Stratis.Bitcoin.Base;
 using Stratis.Bitcoin.Configuration;
 using Stratis.Bitcoin.Connection;
+using Stratis.Bitcoin.Consensus;
 using Stratis.Bitcoin.Controllers.Models;
 using Stratis.Bitcoin.Features.Consensus.Interfaces;
 using Stratis.Bitcoin.Features.RPC.Controllers;
@@ -33,8 +34,8 @@
         private readonly Mock<IPooledTransaction> pooledTransaction;
         private readonly Mock<IPooledGetUnspentTransaction> pooledGetUnspentTransaction;
         private readonly Mock<IGetUnspentTransaction> getUnspentTransaction;
-        private readonly Mock<IConsensusLoop> consensusLoop;
         private readonly Mock<INetworkDifficulty> networkDifficulty;
+        private readonly Mock<IConsensusManager> consensusManager;
         private readonly Mock<IBlockStore> blockStore;
         private FullNodeController controller;

@@ -49,11 +50,11 @@
             this.pooledTransaction = new Mock<IPooledTransaction>();
             this.pooledGetUnspentTransaction = new Mock<IPooledGetUnspentTransaction>();
             this.getUnspentTransaction = new Mock<IGetUnspentTransaction>();
-            this.consensusLoop = new Mock<IConsensusLoop>();
             this.networkDifficulty = new Mock<INetworkDifficulty>();
+            this.consensusManager = new Mock<IConsensusManager>();
             this.blockStore = new Mock<IBlockStore>();
             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object, this.blockStore.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object, this.consensusManager.Object, this.blockStore.Object);
         }

         [Fact]
@@ -62,7 +63,7 @@
             IFullNode fullNode = null;

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, fullNode, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                fullNode, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);

             await this.controller.Stop().ConfigureAwait(false);
         }
@@ -121,7 +122,7 @@
             this.blockStore.Setup(b => b.GetTrxAsync(txId))
                 .ReturnsAsync(transaction);
             this.controller = new FullNodeController(this.LoggerFactory.Object, null, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object, this.blockStore.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object, this.consensusManager.Object, this.blockStore.Object);

             TransactionModel result = await this.controller.GetRawTransactionAsync(txId.ToString(), 0).ConfigureAwait(false);

@@ -140,7 +141,7 @@
                 .Verifiable();

             this.controller = new FullNodeController(this.LoggerFactory.Object, null, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object, this.blockStore.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object, this.consensusManager.Object, this.blockStore.Object);

             TransactionModel result = await this.controller.GetRawTransactionAsync(txId.ToString(), 0).ConfigureAwait(false);

@@ -164,7 +165,7 @@
                 .ReturnsAsync(block.HashBlock);

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object, this.blockStore.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object, this.consensusManager.Object, this.blockStore.Object);

             TransactionModel result = await this.controller.GetRawTransactionAsync(txId.ToString(), 1).ConfigureAwait(false);

@@ -259,7 +260,7 @@
             var txId = new uint256(1243124);

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, null, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             GetTxOutModel result = await this.controller.GetTxOutAsync(txId.ToString(), 0, false).ConfigureAwait(false);

             Assert.Null(result);
@@ -285,7 +286,7 @@
             var txId = new uint256(1243124);

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, null, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             GetTxOutModel result = await this.controller.GetTxOutAsync(txId.ToString(), 0, true).ConfigureAwait(false);

             Assert.Null(result);
@@ -325,7 +326,7 @@
                 .Verifiable();

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             GetTxOutModel model = await this.controller.GetTxOutAsync(txId.ToString(), 0, true).ConfigureAwait(false);

             this.pooledGetUnspentTransaction.Verify();
@@ -381,12 +382,12 @@
         [Fact]
         public void GetBlockCount_ReturnsHeightFromConsensusLoopTip()
         {
-            this.consensusLoop.Setup(c => c.Tip)
+            this.consensusManager.Setup(c => c.Tip)
                 .Returns(this.chain.GetBlock(2));

             var serviceProvider = new Mock<IServiceProvider>();
-            serviceProvider.Setup(s => s.GetService(typeof(IConsensusLoop)))
-                .Returns(this.consensusLoop.Object);
+            serviceProvider.Setup(s => s.GetService(typeof(IConsensusManager)))
+                .Returns(this.consensusManager.Object);

             this.fullNode.Setup(f => f.Services.ServiceProvider)
                 .Returns(serviceProvider.Object);
@@ -401,8 +402,8 @@
         {
             this.nodeSettings = new NodeSettings(protocolVersion: ProtocolVersion.NO_BLOOM_VERSION, args: new[] { "-minrelaytxfeerate=1000" });
             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-    this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
-
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+
             this.fullNode.Setup(f => f.Version)
                 .Returns(new Version(15, 0));
             this.networkDifficulty.Setup(n => n.GetNetworkDifficulty())
@@ -441,7 +442,7 @@
             this.network = Network.Main;

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             GetInfoModel model = this.controller.GetInfo();

             Assert.False(model.Testnet);
@@ -453,7 +454,7 @@
             IChainState chainState = null;

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, chainState, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, chainState, this.connectionManager.Object);
             GetInfoModel model = this.controller.GetInfo();

             Assert.Equal(0, model.Blocks);
@@ -466,7 +467,7 @@
                 .Returns((ChainedHeader)null);

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             GetInfoModel model = this.controller.GetInfo();

             Assert.Equal(0, model.Blocks);
@@ -477,7 +478,7 @@
         {
             this.nodeSettings = null;
             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             GetInfoModel model = this.controller.GetInfo();

             Assert.Equal((uint)NodeSettings.SupportedProtocolVersion, model.ProtocolVersion);
@@ -490,7 +491,7 @@
             IConnectionManager connectionManager = null;

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, connectionManager);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, connectionManager);
             GetInfoModel model = this.controller.GetInfo();

             Assert.Equal(0, model.TimeOffset);
@@ -501,7 +502,7 @@
         public void GetInfo_NoNetworkDifficulty_ReturnsModel()
         {
             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, null,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             GetInfoModel model = this.controller.GetInfo();

             Assert.Equal(0, model.Difficulty);
@@ -514,7 +515,7 @@
               .Returns((Version)null);

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             GetInfoModel model = this.controller.GetInfo();

             Assert.Equal((uint)0, model.Version);
@@ -535,7 +536,7 @@
             this.chain = null;

             this.controller = new FullNodeController(this.LoggerFactory.Object, this.pooledTransaction.Object, this.pooledGetUnspentTransaction.Object, this.getUnspentTransaction.Object, this.networkDifficulty.Object,
-                this.consensusLoop.Object, this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
+                this.fullNode.Object, this.nodeSettings, this.network, this.chain, this.chainState.Object, this.connectionManager.Object);
             BlockHeaderModel result = this.controller.GetBlockHeader("", true);

             Assert.Null(result);


Export vColorTint to gltf

Export vColorTint to gltf

--- ValveResourceFormat/IO/GltfModelExporter.cs
+++ ValveResourceFormat/IO/GltfModelExporter.cs
@@ -513,6 +513,11 @@
                 }
             }

+            if (renderMaterial.VectorParams.TryGetValue("g_vColorTint", out var vColorTint))
+            {
+                material.WithChannelParameter("BaseColor", vColorTint);
+            }
+
             return material;
         }


Only export skinned mesh if mesh has joints

Fixes #263

--- ValveResourceFormat/IO/GltfModelExporter.cs
+++ ValveResourceFormat/IO/GltfModelExporter.cs
@@ -56,8 +56,9 @@

                 var hasJoints = skeleton.AnimationTextureSize > 0;
                 var exportedMesh = CreateGltfMesh(name, mesh, exportedModel, hasJoints);
-
-                if (hasJoints)
+                var hasVertexJoints = exportedMesh.Primitives.All(primitive => primitive.GetVertexAccessor("JOINTS_0") != null);
+
+                if (hasJoints && hasVertexJoints)
                 {
                     var skeletonNode = scene.CreateNode(name);
                     var joints = CreateGltfSkeleton(skeleton, skeletonNode);


# UI Improvement for Logistics: - Dashboard View

--- Web/Areas/Logistics/Views/Home/Index.cshtml
+++ Web/Areas/Logistics/Views/Home/Index.cshtml
@@ -4,963 +4,680 @@

 @{
     ViewBag.Title = "Index";
-    Layout = "~/Views/Shared/_MainLayout.cshtml";
+    //Layout = "~/Views/Shared/_MainLayout.cshtml";
     const string PAGE_NAME = "Logistics.Index";
+    Layout = "~/Views/Shared/NewTheme _MainLayout.cshtml";
+    ViewBag.PageTitle = Html.Translate("Logistics Dashboard");
+    ViewBag.PageTitleDescription = "";
 }

 @{
     var ben = new[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
     int index = 0;
 }
-
-@section styles
-{
-    <link href="~/Content/Dashboard/dashboardcomponents.css" rel="stylesheet" />
-}
+
+
+

-

-

-            limit
-
-

-
Region:

-                <select ng-change="onChange(regionName)" ng-model="regionName" ng-options="r.name as r.name for r in regions">
-                    <option> Choose a Region </option>
-                </select>
-
Region: {{regionName}}

+
+

+

+

+

+

+

+

+                                <select class="form-control" id="idregionid" ng-change="onChange(regionName)" ng-model="regionName" ng-options="r.name as r.name for r in regions">
+                                    <option value=''> Select a Region </option>
+                                </select>
+                                Region:
+

+

+

+

+                                <select class="form-control" id="idprogramid" ng-change="onRequestTypeChange(requestName)" ng-model="requestName" ng-options="p.name as p.name for p in requestType">
+                                    <option value=''>All</option>
+                                </select>
+                                Program:
+

+

+

+
+

+

+
+

-

+

+

+

+

+

+

+

+

+
{{DonationAmount}}

+
Donation(s)

+
.
+

+

+

+

+

+

+
{{pendingTransportOrder}}

+
transport Requisition(s)

+
.
+

+

+

+

+

+

+
{{pendingSIPCAllocation}}

+
SI/PC Assigned

+
.
+

+

+
+

+

+

+

+
{{pendingHubAloocation}}

+
Hub Assigned

+
.
+

+

+
+

+

+

+

+
{{totalApproved }}

+
Approved Requests

+
.
+

+

+
+
+

+

+

+

-

-

-

-

-                        @**@
+

+
+

+

+

+

+

+
 @Html.Translate("Approved Requests")

+

+
+

+

+                                     @Html.Translate("Detail")
+
+

+

+

+

+

+

+

+                                                Number
+                                                Req No
+                                                Zone
+                                                Round
+                                                Year
+                                                Month
+                                                Beneficiaries
+                                                Amount(mt)
+                                                Commodity
+
+                                                Action
+

+

+

+

+                                                {{$index + 1}}
+                                                {{req.reqNo}}
+                                                {{req.zone}}
+                                                {{req.round}}
+                                                {{req.year}}
+                                                {{req.month}}
+                                                {{req.beneficiaries | number}}
+                                                {{req.amount | number}}
+                                                {{req.commodity}}
+                                                Pending
+
+                                                     Assign Hub
+
+

+

+

+

+

+

-
-
-

-                        Approved Requests
-                        {{totalApproved }}
+

+

+
+

+

+

+

+

+
 @Html.Translate("Current HRD")

+

+
+

+

+                                    @* @Html.Translate("Detail")*@
+
+

+

+

+

+

+

+

+
+                                                @foreach (System.Data.DataColumn col in Model.Columns)
+                                                {
+                                                    if (col.IsNumeric())
+                                                    {
+                                                        @col.Caption
+                                                    }
+                                                    else
+                                                    {
+                                                        @col.Caption
+                                                    }
+                                                }
+

+

+

+
+                                            @foreach (System.Data.DataRow row in Model.Rows)
+                                            {
+

+                                                    @{ index = 0; }
+                                                    @foreach (var cell in row.ItemArray)
+                                                    {
+                                                        if (cell is decimal || cell is int)
+                                                        {
+                                                            ben[index] = ben[index] + double.Parse(@String.Format("{0:n0}", @cell));
+                                                            index++;
+                                                            @String.Format("{0:n0}", @cell)
+                                                        }
+                                                        else
+                                                        {
+                                                            @String.Format("{0:n0}", @cell)
+
+                                                        }
+
+                                                    }
+

+
+                                            }
+
+

+

+

+                                                Total:
+                                                @foreach (double t in @ben)
+                                                {
+                                                    @String.Format("{0:n0}", @t)
+                                                }
+

+

+

+

+

+
+

+
+

-
-

-                        Hub Assigned
-                        {{pendingHubAloocation}}
+

+

+
+

+

+

+

+

+
 @Html.Translate("Bid Winners")

+

+
+

+

+                                    @* @Html.Translate("Detail")*@
+
+

+

+

+

+

+

+                                            <select class="form-control" id="bid4bidwinner" ng-change="onChange(bid)" ng-model="bid" ng-options="bid.BidNo as bid.BidNo for bid in bids">
+                                                <option> Choose a Bid </option>
+                                            </select>
+                                            BID:
+

+

+

+

+

+

+

+                                                Number
+                                                Transporter Name
+                                                Capital
+                                                Sub City
+                                                Mobile No
+                                                FDP
+                                                Zone
+                                                Region
+

+

+

+

+                                                {{$index + 1}}
+                                                {{req.Name}}
+                                                {{req.Capital}}
+                                                {{req.SubCity}}
+                                                {{req.MobileNo}}
+                                                {{req.Fdp}}
+                                                {{req.ZoneName}}
+                                                {{req.RegioName}}
+

+

+

+

+
+

+
+
+

-
-

-                        SI/PC Assigned
-                        {{pendingSIPCAllocation}}
+

+

+
+

+

+

+

+

+
 @Html.Translate("Un Contracted Bid Winners")

+

+
+

+

+                                     @Html.Translate("Detail")
+
+

+

+

+

+

+

+                                            <select class="form-control" id="bid4uncontractedbidwinners" ng-change="onChange(bid)" ng-model="bid" ng-options="bid.BidNo as bid.BidNo for bid in bids">
+                                                <option> Choose a Bid </option>
+                                            </select>
+                                            BID:
+

+

+

+

+

+

+

+                                                Number
+                                                Transporter Name
+                                                Capital
+                                                Sub City
+                                                Mobile No
+                                                FDP
+                                                Zone
+                                                Region
+

+

+

+

+                                                {{$index + 1}}
+                                                {{req.Name}}
+                                                {{req.Capital}}
+                                                {{req.SubCity}}
+                                                {{req.MobileNo}}
+                                                {{req.Fdp}}
+                                                {{req.ZoneName}}
+                                                {{req.RegioName}}
+

+

+

+

+
+

+

-
-

-                        transport Requisition(s)
-                        {{pendingTransportOrder}}
+

+

+
+

+

+

+

+

+
 @Html.Translate("Requistions to be SI Allocated")

+

+
+

+

+                                     @Html.Translate("Show more")
+
+

+

+

+

+

+

+

+                                                Number
+                                                Req No
+                                                Program
+                                                Zone
+                                                Beneficiaries
+                                                Amount
+                                                Commodity
+                                                Allocation Type
+
+

+

+

+

+                                                {{$index + 1}}
+                                                {{req.reqNo}}
+                                                {{req.program}}
+                                                {{req.zone}}
+                                                {{req.beneficiaries | number}}
+                                                {{req.amount | number}}
+                                                {{req.commodity}}
+                                                {{req.allocationType}}
+
+
+
+                                                Pending
+                                                @*
+                                                        Create Transport Requisition
+                                                    	*@
+

+

+

+

+

+

-
-

-                        Donation(s)
-                        {{DonationAmount}}
-

-

-

-                            Region
-

-                                <select ng-change="onChange(regionName)" ng-model="regionName" ng-options="r.name as r.name for r in regions">
-                                    <option> Choose a Region </option>
-                                </select>
-

-

-

-                            Program
-

-                                <select ng-change="onRequestTypeChange(requestName)" ng-model="requestName" ng-options="p.name as p.name for p in requestType">
-                                    <option value=''> All </option>
-                                </select>
-

-

-

-
-
-
-
-

-
+

-

-

-

-

-

-

-
-

-
-

-

-

-

-

-

-
-
-                                Approved Requests
-

-

-

-                                    <button ng-click="Detail()" class="btn btn-sm btn-default">
-                                        Detail
-                                    </button>
-
-

-

-

-
-
-
-

-
+
+

+

+

+

+

+
 @Html.Translate("Transporters")

+

+
+

+

+                                    @* @Html.Translate("Show more")*@
+
+

+

+

+

+

+

+                                            <input type="text" class="form-control" id="serachto" ng-model="search.transportOrderNo" placeholder="Enter Transport Order Number">
+                                            Search by Transport order
+

+

+

                                             Number
-                                            Req No
+                                            Transporter
+                                            Tranport Order
+                                            Region
                                             Zone
-                                            Round
-                                            Year
-                                            Month
-                                            Beneficiaries
-                                            Amount(mt)
-                                            Commodity
-
-                                            Action
+                                            Mobile No

-

+

                                             {{$index + 1}}
-                                            {{req.reqNo}}
-                                            {{req.zone}}
-                                            {{req.round}}
-                                            {{req.year}}
-                                            {{req.month}}
-                                            {{req.beneficiaries | number}}
-                                            {{req.amount | number}}
-                                            {{req.commodity}}
-
-
-                                            Pending
-
-
-                                                 Assign Hub
-
-
+                                            {{req.name}}
+                                            {{req.transportOrderNo}}
+                                            {{req.region}}
+                                            {{req.zone}}
+                                            {{req.mobileNo}}

-

-
-

-
-

-
-

-
+

+

+

+

-

-
-

-
-

-

-
-

-

-

-

-
-                                Current HRD
-

-
-

-
-
-
-

-
-

-
+
+

+

+

+

+

+
 @Html.Translate("Transporters which did not report back completely to DRMFSS")

+

+
+

+

+                                     @Html.Translate("Show Details")
+
+

+

+

+

-
-                                            @foreach (System.Data.DataColumn col in Model.Columns)
-                                            {
-                                                if (col.IsNumeric())
-                                                {
-                                            @col.Caption
-                                                }
-                                                else
-                                                {
-                                            @col.Caption
-                                                }
-                                            }
+                                            Number
+                                            Transporter
+                                            Bid Number
+                                            FDP
+                                            Dispatched Date

-
-                                        @foreach (System.Data.DataRow row in Model.Rows)
-                                        {
-

-                                            @{ index = 0; }
-                                            @foreach (var cell in row.ItemArray)
-                                                {
-                                                    if (cell is decimal || cell is int)
-                                                    {
-                                                        ben[index] = ben[index] + double.Parse(@String.Format("{0:n0}", @cell));
-                                                        index++;
-                                                @String.Format("{0:n0}", @cell)
-                                                    }
-                                                    else
-                                                    {
-                                                @String.Format("{0:n0}", @cell)
-
-                                                    }
-
-                                                }
-

-
-                                        }
-
-

-

-                                        Total:
-                                        @foreach (double t in @ben)
-                                        {
-                                        @String.Format("{0:n0}", @t)
-                                        }
-

-

-
-
-
-

-
-

-
-
-

-
-
-

-

-
-

-
-

-

-
-

-

-

-

-
-                                Bid Winners
-

-
-

-
-
-
-

-
-

-

-

-
-
-                                            Bid:
-                                            <select ng-change="onChange(bid)" ng-model="bid" ng-options="bid.BidNo as bid.BidNo for bid in bids">
-                                                <option> Choose a Bid </option>
-                                            </select>
-
Bid: {{bid}}

-
-
-
-

-

-                                            Number
-                                            Transporter Name
-                                            Capital
-                                            Sub City
-                                            Mobile No
-                                            FDP
-                                            Zone
-                                            Region
-
-
-
-
-
-

-

-

-

+

                                             {{$index + 1}}
-                                            {{req.Name}}
-                                            {{req.Capital}}
-                                            {{req.SubCity}}
-                                            {{req.MobileNo}}
-                                            {{req.Fdp}}
-                                            {{req.ZoneName}}
-                                            {{req.RegioName}}
-
-
-
-

-
-

-

-
-

-
-

-
-
-

-
-
-

-

-
-
-
-

-
-

-

-
-

-

-

-

-
-                                Un Contracted Bid Winners
-

-
-

-

-                                    <button ng-click="Detail();" class="btn btn-sm btn-default">
-                                        Detail
-                                    </button>
-
-

-

-
-

-
-
-
-

-
-

-

-

-
-                                            Bid:
-                                            <select ng-change="onChange(bid)" ng-model="bid" ng-options="bid.BidNo as bid.BidNo for bid in bids">
-                                                <option> Choose a Bid </option>
-                                            </select>
-
Bid: {{bid}}

-
-
-

-

-                                            Number
-                                            Transporter Name
-                                            Capital
-                                            Sub City
-                                            Mobile No
-                                            FDP
-                                            Zone
-                                            Region
-
-
-
-
-
-

-

-

-

-                                            {{$index + 1}}
-                                            {{req.Name}}
-                                            {{req.Capital}}
-                                            {{req.SubCity}}
-                                            {{req.MobileNo}}
-                                            {{req.Fdp}}
-                                            {{req.ZoneName}}
-                                            {{req.RegioName}}
-
-
-
-

-
-
-

-
-

-
-

-
-

-
-
-

-
-
-

-

-
-
-

-
-

-

-
-

-

-

-

-
-                                Requistions to be SI Allocated
-

-

-

-                                    <button class="btn btn-sm btn-default">
-                                        Show more
-                                    </button>
-                                    @*FDP Commodity Receipt*@
-

-

-

-
-
-
-

-
-

-

-

-                                            Number
-                                            Req No
-                                            Program
-                                            Zone
-                                            Beneficiaries
-                                            Amount
-                                            Commodity
-                                            Allocation Type
-
-

-

-

-

-                                            {{$index + 1}}
-                                            {{req.reqNo}}
-                                            {{req.program}}
-                                            {{req.zone}}
-                                            {{req.beneficiaries | number}}
-                                            {{req.amount | number}}
-                                            {{req.commodity}}
-                                            {{req.allocationType}}
-
-
-
-                                            Pending
-                                            @*
-                                                    Create Transport Requisition
-                                                	*@
-

-
-
-

-

-
-

-
-

-
-
-

-
-
-

-

-
-

-
-

-

-
-

-

-

-

-
-                                Transporters
-

-
-

-
-
-
-

-                            Search by Transport order
-                            <input type="text" ng-model="search.transportOrderNo" />
-

-

-

-                                        Number
-
-                                        Transporter
-                                        Tranport Order
-                                        Region
-                                        Zone
-                                        Mobile No
-
-

-

-

-

-                                        {{$index + 1}}
-
-                                        {{req.name}}
-                                        {{req.transportOrderNo}}
-                                        {{req.region}}
-                                        {{req.zone}}
-                                        {{req.mobileNo}}
-
-

-

-

-
-

-
-

-
-
-

-
-
-
-

-

-
-

-
-

-

-
-

-

-

-

-
-                                Delayed Transporters
-

-
-

-
-
-
-

-

-

-

-                                        Number
-
-                                        Transporter
-                                        Transport Order
-                                        Signed Date
-                                        Order Expired Date
-                                        Days Passed After Signed
-
-

-

-

-

-                                        {{$index + 1}}
-
-                                        {{req.TransporterName}}
-                                        {{req.TransportOrderNo}}
-                                        {{req.SignedDate}}
-                                        {{req.OrderExpiryDate}}
-                                        {{req.DaysPassedAfterSigned | number}}
-
-

-

-

-
-

-
-

-
-
-

-
-
-
-

-

-
-

-
-

-

-
-

-

-

-

-
-                                Transporters which did not report back completely to DRMFSS
-

-

-

-
-                                        Show Details
-
-
-

-

-

-
-
-
-

-

-

-

-                                        Number
-
-                                        Transporter
-                                        Bid Number
-                                        FDP
-                                        Dispatched Date
-

-

-

-

-                                        {{$index + 1}}
-
-                                        {{req.TransporterName}}
-                                        {{req.BidNo}}
-                                        {{req.FDPName}}
-                                        {{req.DispatchedDate}}
-
-

-

-

-
-

-
-

-
-
-

-
-
-
-

-

-
-

-
-

-

-
-

-

-

-

-
-                                Current Transport Requisition
-

-

-

-                                    <button class="btn btn-sm btn-default">
-                                        Show more
-                                    </button>
-
-

-

-

-
-
-
-

-
-

-

-

-                                        Number
-
-                                        Req No
-                                        Zone
-                                        Beneficiaries
-                                        Amount
-                                        Commodity
-
-

-

-

-

-                                        {{$index + 1}}
-                                        {{req.reqNo}}
-                                        {{req.zone}}
-                                        {{req.beneficiaries}}
-                                        {{req.amount}}
-                                        {{req.commodity}}
-
-
-                                        On process
-
-
-                                                View
-
-
-

-

-

-
-

-
-

-
-
-

-
-
-
-

-

-

-
-

-

-

-

-
-                                Hubs Diapatch Allocation
-

-                           @*

-

-                                    <button class="btn btn-sm btn-default">
-                                        Show more
-                                    </button>
-
-

-
*@
-

-
-
-

-
-
-

-

-

-
-                            Select As of Date
-                            <input id="txtDate1" class="cats-datepicker2  input-medium" type="text" placeholder="As of date">
-

-
-

-

-

-                                    Select a Program
-                                    <select ng-model="reqParam.program">
-                                        <option ng-repeat="pr in ProgramsCollection" value="{{pr.ProgramId}}">{{pr.Name}}</option>
-                                    </select>
-                                    @*<select ng-model="selectedProgram" ng-options="p.Name for p in ProgramsCollection">*@
-

-

-

-

-

-
-

-                            <button type="button" class="btn btn-default btn-lg" style="margin-top: 23px;" ng-click="getSummary()">Get</button>
-

-

-

-

-

-

-                                            HUb
-                                            Total Free Stock
-                                             Total Physical Stock
-                                             Dispatched
-                                             Remaining
-

-

-

-

-
-                                            {{sd.HubName}}
-                                            {{sd.TotalFreestock |number:2}}
-                                            {{sd.TotalPhysicalStock |number:2}}
-                                            {{sd.DispatchedAmount |number:2}}
-                                            {{sd.Remaining |number:2}}
-
+                                            {{req.TransporterName}}
+                                            {{req.BidNo}}
+                                            {{req.FDPName}}
+                                            {{req.DispatchedDate}}

-
-

-
+

+

-
-
-

-
-
-
+

+

+

+

+

+

+

+
 @Html.Translate("Current Transport Requisition")

+

+
+

+

+                                     @Html.Translate("Show More")
+
+

+

+

+

+

+

+

+                                                Number
+                                                Req No
+                                                Zone
+                                                Beneficiaries
+                                                Amount
+                                                Commodity
+
+
+

+

+

+

+                                                {{$index + 1}}
+                                                {{req.reqNo}}
+                                                {{req.zone}}
+                                                {{req.beneficiaries}}
+                                                {{req.amount}}
+                                                {{req.commodity}}
+                                                On process
+                                                View
+

+

+

+

+
+

+

+

+

+

+
+

+

+

+

+

+
 @Html.Translate("Hubs Dispatch Allocation")

+

+
+

+

+                                    @* @Html.Translate("Show More")*@
+
+

+

+

+

+

+                                        Select As of Date
+

+                                            <input id="txtDate1" class="cats-datepicker2  form-control" type="text" placeholder="mm/dd/yyyy">
+

+

+

+                                        Select a Program
+

+                                            <select ng-model="reqParam.program" class="form-control">
+                                                <option ng-repeat="pr in ProgramsCollection" value="{{pr.ProgramId}}">{{pr.Name}}</option>
+                                            </select>
+

+

+

+

+                                            <button type="button" class="btn green " ng-click="getSummary()">Get</button>
+

+

+

+

+

+

+

+                                                HUb
+                                                Total Free Stock
+                                                Total Physical Stock
+                                                Dispatched
+                                                Remaining
+

+

+

+

+                                                {{sd.HubName}}
+                                                {{sd.TotalFreestock |number:2}}
+                                                {{sd.TotalPhysicalStock |number:2}}
+                                                {{sd.DispatchedAmount |number:2}}
+                                                {{sd.Remaining |number:2}}
+

+

+

+

+

+

+

+

-

-
+</script>

-


Fixed a problem with with DLL detected as a satellite assembly

--- WinFormAnimation/Properties/AssemblyInfo.cs
+++ WinFormAnimation/Properties/AssemblyInfo.cs
@@ -15,7 +15,7 @@
 [assembly: AssemblyProduct("WinForm Animation Library")]
 [assembly: AssemblyCopyright("Soroush Falahati")]
 [assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("en")]
+[assembly: AssemblyCulture("")]

 // Setting ComVisible to false makes the types in this assembly not visible
 // to COM components.  If you need to access a type in this assembly from


Cleanup.

Cleanup.

--- WpfAnalyzers/Analyzers/AttributeAnalyzer.cs
+++ WpfAnalyzers/Analyzers/AttributeAnalyzer.cs
@@ -1,5 +1,6 @@
 namespace WpfAnalyzers
 {
+    using System;
     using System.Collections.Generic;
     using System.Collections.Immutable;
     using System.Linq;
@@ -8,6 +9,7 @@
     using Microsoft.CodeAnalysis.CSharp;
     using Microsoft.CodeAnalysis.CSharp.Syntax;
     using Microsoft.CodeAnalysis.Diagnostics;
+    using Attribute = Gu.Roslyn.AnalyzerExtensions.Attribute;

     [DiagnosticAnalyzer(LanguageNames.CSharp)]
     internal class AttributeAnalyzer : DiagnosticAnalyzer
@@ -38,33 +40,32 @@
                 context.Node is AttributeSyntax attribute)
             {
                 if (Attribute.IsType(attribute, KnownSymbols.DependsOnAttribute, context.SemanticModel, context.CancellationToken) &&
-                    attribute.TrySingleArgument(out var nameArg) &&
-                    context.SemanticModel.TryGetConstantValue(nameArg.Expression, context.CancellationToken, out string name))
-                {
-                    if (context.ContainingSymbol.ContainingType.TryFindPropertyRecursive(name, out var property))
-                    {
-                        if (nameArg.Expression.IsKind(SyntaxKind.StringLiteralExpression))
-                        {
-                            context.ReportDiagnostic(
-                                Diagnostic.Create(
-                                    Descriptors.WPF0150UseNameof,
-                                    nameArg.GetLocation(),
+                    attribute.TrySingleArgument(out var argument))
+                {
+                    if (TryFindPropertyRecursive(context.ContainingSymbol.ContainingType, argument, out var property))
+                    {
+                        if (argument.Expression.IsKind(SyntaxKind.StringLiteralExpression))
+                        {
+                            context.ReportDiagnostic(
+                                Diagnostic.Create(
+                                    Descriptors.WPF0150UseNameof,
+                                    argument.GetLocation(),
                                     ImmutableDictionary<string, string>.Empty.Add(nameof(IdentifierNameSyntax), property.Name),
                                     property.Name));
                         }
                     }
                     else
                     {
-                        context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0008DependsOnTarget, nameArg.GetLocation()));
+                        context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0008DependsOnTarget, argument.GetLocation()));
                     }
                 }
                 else if (Attribute.IsType(attribute, KnownSymbols.XmlnsDefinitionAttribute, context.SemanticModel, context.CancellationToken) &&
-                    Attribute.TryFindArgument(attribute, 1, KnownSymbols.XmlnsDefinitionAttribute.ClrNamespaceArgumentName, out var arg) &&
-                    context.SemanticModel.TryGetConstantValue(arg.Expression, context.CancellationToken, out string @namespace) &&
-                    context.Compilation.GetSymbolsWithName(x => !string.IsNullOrEmpty(x) && @namespace.EndsWith(x), SymbolFilter.Namespace)
+                         Attribute.TryFindArgument(attribute, 1, KnownSymbols.XmlnsDefinitionAttribute.ClrNamespaceArgumentName, out argument) &&
+                         context.SemanticModel.TryGetConstantValue(argument.Expression, context.CancellationToken, out string @namespace) &&
+                         context.Compilation.GetSymbolsWithName(x => !string.IsNullOrEmpty(x) && @namespace.EndsWith(x), SymbolFilter.Namespace)
                            .All(x => x.ToMinimalDisplayString(context.SemanticModel, 0) != @namespace))
                 {
-                    context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0051XmlnsDefinitionMustMapExistingNamespace, arg.GetLocation(), arg));
+                    context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0051XmlnsDefinitionMustMapExistingNamespace, argument.GetLocation(), argument));
                 }
                 else if (Attribute.IsType(attribute, KnownSymbols.MarkupExtensionReturnTypeAttribute, context.SemanticModel, context.CancellationToken) &&
                          context.ContainingSymbol is ITypeSymbol containingType &&
@@ -73,18 +74,16 @@
                          attribute.TryFirstAncestor<ClassDeclarationSyntax>(out var classDeclaration) &&
                          MarkupExtension.TryGetReturnType(classDeclaration, context.SemanticModel, context.CancellationToken, out var returnType) &&
                          returnType != KnownSymbols.Object &&
-                         Attribute.TryFindArgument(attribute, 0, "returnType", out arg) &&
-                         arg.Expression is TypeOfExpressionSyntax typeOf &&
+                         Attribute.TryFindArgument(attribute, 0, "returnType", out argument) &&
+                         argument.Expression is TypeOfExpressionSyntax typeOf &&
                          context.SemanticModel.TryGetType(typeOf.Type, context.CancellationToken, out var argType) &&
                          !returnType.IsAssignableTo(argType, context.Compilation))
                 {
-                    context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0081MarkupExtensionReturnTypeMustUseCorrectType, arg.GetLocation(), returnType));
+                    context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0081MarkupExtensionReturnTypeMustUseCorrectType, argument.GetLocation(), returnType));
                 }
                 else if (Attribute.IsType(attribute, KnownSymbols.ConstructorArgumentAttribute, context.SemanticModel, context.CancellationToken) &&
-                         ConstructorArgument.TryGetArgumentName(attribute, out var argument, out var argumentName) &&
-                         attribute.TryFirstAncestor<PropertyDeclarationSyntax>(out var propertyDeclaration) &&
-                         context.SemanticModel.TryGetSymbol(propertyDeclaration, context.CancellationToken, out var property) &&
-                         ConstructorArgument.TryGetParameterName(property, context.SemanticModel, context.CancellationToken, out var parameterName) &&
+                         ConstructorArgument.TryGetArgumentName(attribute, out argument, out var argumentName) &&
+                         ConstructorArgument.TryGetParameterName(context.ContainingProperty(), context.SemanticModel, context.CancellationToken, out var parameterName) &&
                          argumentName != parameterName)
                 {
                     context.ReportDiagnostic(
@@ -95,48 +94,88 @@
                             parameterName));
                 }
                 else if (Attribute.IsType(attribute, KnownSymbols.XamlSetMarkupExtensionAttribute, context.SemanticModel, context.CancellationToken) &&
-                         Attribute.TryFindArgument(attribute, 0, "xamlSetMarkupExtensionHandler", out arg) &&
-                         context.SemanticModel.TryGetConstantValue(arg.Expression, context.CancellationToken, out string target) &&
-                         !(context.ContainingSymbol as ITypeSymbol).TryFindFirstMethodRecursive(target, m => IsMarkupExtensionHandler(m), out _))
-                {
-                    context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0084XamlSetMarkupExtensionAttributeTarget, arg.Expression.GetLocation()));
+                         Attribute.TryFindArgument(attribute, 0, "xamlSetMarkupExtensionHandler", out argument))
+                {
+                    if (TryFindMethodRecursive(context.ContainingSymbol as INamedTypeSymbol, argument, m => IsMarkupExtensionHandler(m), out var method))
+                    {
+                        if (argument.Expression.IsKind(SyntaxKind.StringLiteralExpression))
+                        {
+                            context.ReportDiagnostic(
+                                Diagnostic.Create(
+                                    Descriptors.WPF0150UseNameof,
+                                    argument.GetLocation(),
+                                    ImmutableDictionary<string, string>.Empty.Add(nameof(IdentifierNameSyntax), method.Name),
+                                    method.Name));
+                        }
+                    }
+                    else
+                    {
+                        context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0084XamlSetMarkupExtensionAttributeTarget, argument.Expression.GetLocation()));
+                    }
                 }
                 else if (Attribute.IsType(attribute, KnownSymbols.XamlSetTypeConverterAttribute, context.SemanticModel, context.CancellationToken) &&
-                         Attribute.TryFindArgument(attribute, 0, "xamlSetTypeConverterHandler", out arg) &&
-                         context.SemanticModel.TryGetConstantValue(arg.Expression, context.CancellationToken, out target) &&
-                         !(context.ContainingSymbol as ITypeSymbol).TryFindFirstMethodRecursive(target, m => IsTypeConverterHandler(m), out _))
-                {
-                    context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0085XamlSetTypeConverterTarget, arg.Expression.GetLocation()));
+                         Attribute.TryFindArgument(attribute, 0, "xamlSetTypeConverterHandler", out argument))
+                {
+                    if (TryFindMethodRecursive(context.ContainingSymbol as INamedTypeSymbol, argument, m => IsTypeConverterHandler(m), out var method))
+                    {
+                        if (argument.Expression.IsKind(SyntaxKind.StringLiteralExpression))
+                        {
+                            context.ReportDiagnostic(
+                                Diagnostic.Create(
+                                    Descriptors.WPF0150UseNameof,
+                                    argument.GetLocation(),
+                                    ImmutableDictionary<string, string>.Empty.Add(nameof(IdentifierNameSyntax), method.Name),
+                                    method.Name));
+                        }
+                    }
+                    else
+                    {
+                        context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0085XamlSetTypeConverterTarget, argument.Expression.GetLocation()));
+                    }
                 }
                 else if (Attribute.IsType(attribute, KnownSymbols.TemplatePartAttribute, context.SemanticModel, context.CancellationToken) &&
-                         Attribute.TryFindArgument(attribute, 0, "Name", out arg) &&
-                         context.SemanticModel.TryGetConstantValue(arg.Expression, context.CancellationToken, out string partName) &&
+                         Attribute.TryFindArgument(attribute, 0, "Name", out argument) &&
+                         context.SemanticModel.TryGetConstantValue(argument.Expression, context.CancellationToken, out string partName) &&
                          !partName.StartsWith("PART_"))
                 {
-                    context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0132UsePartPrefix, arg.Expression.GetLocation(), arg));
+                    context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0132UsePartPrefix, argument.Expression.GetLocation(), argument));
                 }
                 else if (Attribute.IsType(attribute, KnownSymbols.ContentPropertyAttribute, context.SemanticModel, context.CancellationToken) &&
-                         attribute.TrySingleArgument(out nameArg) &&
-                         context.SemanticModel.TryGetConstantValue(nameArg.Expression, context.CancellationToken, out name) &&
-                         context.ContainingSymbol is INamedTypeSymbol contentPropertyType)
-                {
-                    if (contentPropertyType.TryFindPropertyRecursive(name, out property))
-                    {
-                        if (nameArg.Expression.IsKind(SyntaxKind.StringLiteralExpression))
-                        {
-                            context.ReportDiagnostic(
-                                Diagnostic.Create(
-                                    Descriptors.WPF0150UseNameof,
-                                    nameArg.GetLocation(),
+                         attribute.TrySingleArgument(out argument))
+                {
+                    if (TryFindPropertyRecursive(context.ContainingSymbol as INamedTypeSymbol, argument, out var property))
+                    {
+                        if (argument.Expression.IsKind(SyntaxKind.StringLiteralExpression))
+                        {
+                            context.ReportDiagnostic(
+                                Diagnostic.Create(
+                                    Descriptors.WPF0150UseNameof,
+                                    argument.GetLocation(),
                                     ImmutableDictionary<string, string>.Empty.Add(nameof(IdentifierNameSyntax), property.Name),
                                     property.Name));
                         }
                     }
                     else
                     {
-                        context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0133ContentPropertyTarget, nameArg.GetLocation()));
-                    }
-                }
+                        context.ReportDiagnostic(Diagnostic.Create(Descriptors.WPF0133ContentPropertyTarget, argument.GetLocation()));
+                    }
+                }
+            }
+
+            bool TryFindPropertyRecursive(ITypeSymbol type, AttributeArgumentSyntax argument, out IPropertySymbol result)
+            {
+                result = null;
+                return type != null &&
+                       context.SemanticModel.TryGetConstantValue(argument.Expression, context.CancellationToken, out string name) &&
+                       type.TryFindPropertyRecursive(name, out result);
+            }
+
+            bool TryFindMethodRecursive(ITypeSymbol type, AttributeArgumentSyntax argument, Func<IMethodSymbol, bool> selector, out IMethodSymbol result)
+            {
+                result = null;
+                return type != null &&
+                       context.SemanticModel.TryGetConstantValue(argument.Expression, context.CancellationToken, out string name) &&
+                       type.TryFindFirstMethodRecursive(name, selector, out result);
             }
         }


CP-6317: Importing from branch clearwater-ln.
# HG changeset patch
# User vetrivelc <vetrivel.chinnasamy@citrix.com>
# Date 1374148735 -19800
# Node ID cd999f68c24b4f1391e9a2012c4b0466910045c6
# Parent  a1e482150cd280292f10f7ce14666b70066da2fe
Reverted changes (to fix build break for now)

Signed-off-by: Konstantina Chremmou <a7d1f757a659045fb6db8c1e3849a1c8ad00b97a@citrix.com>

--- XenAdmin/Dialogs/BondProperties.Designer.cs
+++ XenAdmin/Dialogs/BondProperties.Designer.cs
@@ -52,7 +52,7 @@
             //
             resources.ApplyResources(this.Details, "Details");
             this.Details.BackColor = System.Drawing.Color.Transparent;
-            this.Details.Name = resources.ApplyResources(this.Details, "Details");
+            this.Details.Name = "Details";
             this.Details.ValidChanged += new System.EventHandler(this.Details_ValidChanged);
             //
             // BondProperties


Implemented the menu button using events instead of using a custom subclass

--- Xwt.Gtk/Xwt.GtkBackend/MenuButtonBackend.cs
+++ Xwt.Gtk/Xwt.GtkBackend/MenuButtonBackend.cs
@@ -32,27 +32,78 @@
 {
 	public class MenuButtonBackend: ButtonBackend, IMenuButtonBackend
 	{
+		bool isOpen;
+
 		public MenuButtonBackend ()
 		{
 		}

 		public override void Initialize ()
 		{
-			Widget = new InternalMenuButton ();
-			Widget.ShowAll ();
-			Widget.MenuCreator = CreateMenu;
-		}
-
-		new InternalMenuButton Widget {
-			get { return (InternalMenuButton)base.Widget; }
-			set { base.Widget = value; }
+			base.Initialize ();
+			Widget.Clicked += HandleClicked;
+			((Gtk.Widget)Widget).StateChanged += HandleStateChanged;
 		}

 		new IMenuButtonEventSink EventSink {
 			get { return (IMenuButtonEventSink)base.EventSink; }
 		}
+
+		void HandleClicked (object sender, EventArgs e)
+		{
+			Gtk.Menu menu = CreateMenu ();
+
+			if (menu != null) {
+				isOpen = true;
+
+				//make sure the button looks depressed
+				Gtk.ReliefStyle oldRelief = Widget.Relief;
+				Widget.Relief = Gtk.ReliefStyle.Normal;
+
+				//clean up after the menu's done
+				menu.Hidden += delegate {
+					Widget.Relief = oldRelief ;
+					isOpen = false;
+					((Gtk.Widget)Widget).State = Gtk.StateType.Normal;
+
+					//FIXME: for some reason the menu's children don't get activated if we destroy
+					//directly here, so use a timeout to delay it
+					GLib.Timeout.Add (100, delegate {
+						//menu.Destroy ();
+						return false;
+					});
+				};
+				menu.Popup (null, null, PositionFunc, 0, Gtk.Global.CurrentEventTime);
+			}
+		}
+
+		void HandleStateChanged (object o, Gtk.StateChangedArgs args)
+		{
+			Gtk.Widget w = (Gtk.Widget)Widget;
+			//while the menu's open, make sure the button looks depressed
+			if (isOpen && w.State != Gtk.StateType.Active)
+				w.State = Gtk.StateType.Active;
+		}
+
+		void PositionFunc (Gtk.Menu mn, out int x, out int y, out bool push_in)
+		{
+			Gtk.Widget w = (Gtk.Widget)Widget;
+			w.GdkWindow.GetOrigin (out x, out y);
+			Gdk.Rectangle rect = w.Allocation;
+			x += rect.X;
+			y += rect.Y + rect.Height;
+
+			//if the menu would be off the bottom of the screen, "drop" it upwards
+			if (y + mn.Requisition.Height > w.Screen.Height) {
+				y -= mn.Requisition.Height;
+				y -= rect.Height;
+			}
+
+			//let GTK reposition the button if it still doesn't fit on the screen
+			push_in = true;
+		}

-		Gtk.Menu CreateMenu (InternalMenuButton mb)
+		Gtk.Menu CreateMenu ()
 		{
 			MenuBackend m = null;
 			Toolkit.Invoke (delegate {
@@ -61,94 +112,5 @@
 			return m != null ? m.Menu : null;
 		}
 	}
-
-	class InternalMenuButton : Gtk.Button
-	{
-		MenuCreator creator;
-		bool isOpen;
-
-		public InternalMenuButton ()
-			: base ()
-		{
-		}
-
-		protected InternalMenuButton (IntPtr raw)
-			: base (raw)
-		{
-
-		}
-
-		public MenuCreator MenuCreator {
-			get { return creator; }
-			set { creator = value; }
-		}
-
-		protected override void OnClicked ()
-		{
-			base.OnClicked ();
-
-			if (creator != null) {
-				Gtk.Menu menu = creator (this);
-
-				if (menu != null) {
-					isOpen = true;
-
-					//make sure the button looks depressed
-					Gtk.ReliefStyle oldRelief = this.Relief;
-					this.Relief = Gtk.ReliefStyle.Normal;
-
-					//clean up after the menu's done
-					menu.Hidden += delegate {
-						this.Relief = oldRelief ;
-						isOpen = false;
-						this.State = Gtk.StateType.Normal;
-
-						//FIXME: for some reason the menu's children don't get activated if we destroy
-						//directly here, so use a timeout to delay it
-						GLib.Timeout.Add (100, delegate {
-							//menu.Destroy ();
-							return false;
-						});
-					};
-					menu.Popup (null, null, PositionFunc, 0, Gtk.Global.CurrentEventTime);
-				}
-			}
-
-		}
-
-		protected override void OnStateChanged (Gtk.StateType previous_state)
-		{
-			base.OnStateChanged (previous_state);
-
-			//while the menu's open, make sure the button looks depressed
-			if (isOpen && this.State != Gtk.StateType.Active)
-				this.State = Gtk.StateType.Active;
-		}
-
-		void PositionFunc (Gtk.Menu mn, out int x, out int y, out bool push_in)
-		{
-			this.GdkWindow.GetOrigin (out x, out y);
-			Gdk.Rectangle rect = this.Allocation;
-			x += rect.X;
-			y += rect.Y + rect.Height;
-
-			//if the menu would be off the bottom of the screen, "drop" it upwards
-			if (y + mn.Requisition.Height > this.Screen.Height) {
-				y -= mn.Requisition.Height;
-				y -= rect.Height;
-			}
-
-			//let GTK reposition the button if it still doesn't fit on the screen
-			push_in = true;
-		}
-
-		protected override void OnDestroyed ()
-		{
-			creator = null;
-			base.OnDestroyed ();
-		}
-	}
-
-	delegate Gtk.Menu MenuCreator (InternalMenuButton button);
 }