From a377ee03993d67f2c273aa7b81086099a31cfdbd Mon Sep 17 00:00:00 2001 From: Dawei Huang Date: Thu, 25 Apr 2024 14:07:19 +0800 Subject: [PATCH 1/2] Fix `AssemblyDescriptorResolver` assembly matching (#15506) * Fix `AssemblyDescriptorResolver` assembly matching * Update src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs * Update AssemblyDescriptorResolver.cs --------- Co-authored-by: Max Katz --- .../Platform/Internal/AssemblyDescriptorResolver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs b/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs index 8360feff4a..0a23014cac 100644 --- a/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs +++ b/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs @@ -26,7 +26,7 @@ internal class AssemblyDescriptorResolver: IAssemblyDescriptorResolver if (!_assemblyNameCache.TryGetValue(name, out var rv)) { var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); - var match = loadedAssemblies.FirstOrDefault(a => a.GetName().Name == name); + var match = loadedAssemblies.FirstOrDefault(a => name.Equals(a.GetName().Name, StringComparison.InvariantCultureIgnoreCase)); if (match != null) { _assemblyNameCache[name] = rv = new AssemblyDescriptor(match); From e9592100985d262a12bfc81c79bb7b418d17dd90 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Wed, 24 Apr 2024 23:12:24 -0700 Subject: [PATCH 2/2] Fix NativeMenuBar tooltip (#15505) * Fix native menu bar tooltip * Make ToolTip tests more reliable * Increase MacOS_Native_Menu_Has_ToolTip_If_Defined sleep delay * Disable MacOS_Native_Menu_Has_ToolTip_If_Defined, as it fails way too often --- samples/IntegrationTestApp/MainWindow.axaml.cs | 2 +- src/Avalonia.Controls/NativeMenuBarPresenter.cs | 4 +++- .../NativeMenuTests.cs | 10 +++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/samples/IntegrationTestApp/MainWindow.axaml.cs b/samples/IntegrationTestApp/MainWindow.axaml.cs index 170936f50d..986eb920a3 100644 --- a/samples/IntegrationTestApp/MainWindow.axaml.cs +++ b/samples/IntegrationTestApp/MainWindow.axaml.cs @@ -49,7 +49,7 @@ namespace IntegrationTestApp var menuItem = new NativeMenuItem { Header = (string?)tabItem.Header, - ToolTip = (string?)tabItem.Header, + ToolTip = $"Tip:{(string?)tabItem.Header}", IsChecked = tabItem.IsSelected, ToggleType = NativeMenuItemToggleType.Radio, }; diff --git a/src/Avalonia.Controls/NativeMenuBarPresenter.cs b/src/Avalonia.Controls/NativeMenuBarPresenter.cs index c5637d3dd4..f071afcc3b 100644 --- a/src/Avalonia.Controls/NativeMenuBarPresenter.cs +++ b/src/Avalonia.Controls/NativeMenuBarPresenter.cs @@ -33,7 +33,9 @@ internal class NativeMenuBarPresenter : Menu [!MenuItem.InputGestureProperty] = nativeItem.GetObservable(NativeMenuItem.GestureProperty).ToBinding(), [!MenuItem.ToggleTypeProperty] = nativeItem.GetObservable(NativeMenuItem.ToggleTypeProperty) // TODO12 remove NativeMenuItemToggleType - .Select(v => (MenuItemToggleType)v).ToBinding() + .Select(v => (MenuItemToggleType)v).ToBinding(), + [!ToolTip.TipProperty] = + nativeItem.GetObservable(NativeMenuItem.ToolTipProperty).ToBinding(), }; BindingOperations.Apply(newItem, MenuItem.IsCheckedProperty, InstancedBinding.TwoWay( diff --git a/tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs b/tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs index c4167bfa9d..290ebf70e6 100644 --- a/tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs +++ b/tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs @@ -70,13 +70,13 @@ namespace Avalonia.IntegrationTests.Appium buttonMenuItem.MovePointerOver(); // Wait for tooltip to open. - Thread.Sleep(1000); + Thread.Sleep(2000); var toolTipCandidates = _session.FindElementsByClassName("TextBlock"); - Assert.Contains(toolTipCandidates, x => x.Text == "Button"); + Assert.Contains(toolTipCandidates, x => x.Text == "Tip:Button"); } - [PlatformFact(TestPlatforms.MacOS)] + [PlatformFact(TestPlatforms.MacOS, Skip = "Flaky test")] public void MacOS_Native_Menu_Has_ToolTip_If_Defined() { var menuBar = _session.FindElementByXPath("/XCUIElementTypeApplication/XCUIElementTypeMenuBar"); @@ -87,10 +87,10 @@ namespace Avalonia.IntegrationTests.Appium buttonMenuItem.MovePointerOver(); // Wait for tooltip to open. - Thread.Sleep(2000); + Thread.Sleep(4000); var toolTipCandidates = _session.FindElementsByClassName("XCUIElementTypeStaticText"); - Assert.Contains(toolTipCandidates, x => x.Text == "Button"); + Assert.Contains(toolTipCandidates, x => x.Text == "Tip:Button"); } } }