Browse Source

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
pull/15512/head
Max Katz 2 years ago
committed by GitHub
parent
commit
eace88960a
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      samples/IntegrationTestApp/MainWindow.axaml.cs
  2. 4
      src/Avalonia.Controls/NativeMenuBarPresenter.cs
  3. 10
      tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs

2
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,
};

4
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(

10
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");
}
}
}

Loading…
Cancel
Save