From eace88960a8f34f8f60b1a32513b55814cc218f1 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Wed, 24 Apr 2024 23:12:24 -0700 Subject: [PATCH] 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"); } } }