Browse Source

Make ContextMenu leak tests fail again.

By adding focus/input manager.
pull/3745/head
Steven Kirk 6 years ago
parent
commit
323cfdca3a
  1. 2
      src/Avalonia.Controls/WindowBase.cs
  2. 10
      tests/Avalonia.LeakTests/ControlTests.cs
  3. 4
      tests/Avalonia.UnitTests/MockWindowingPlatform.cs

2
src/Avalonia.Controls/WindowBase.cs

@ -255,7 +255,7 @@ namespace Avalonia.Controls
if (scope != null)
{
FocusManager.Instance.SetFocusScope(scope);
FocusManager.Instance?.SetFocusScope(scope);
}
IsActive = true;

10
tests/Avalonia.LeakTests/ControlTests.cs

@ -5,6 +5,7 @@ using System.Runtime.Remoting.Contexts;
using Avalonia.Controls;
using Avalonia.Controls.Templates;
using Avalonia.Diagnostics;
using Avalonia.Input;
using Avalonia.Layout;
using Avalonia.Media;
using Avalonia.Platform;
@ -441,6 +442,10 @@ namespace Avalonia.LeakTests
}
var window = new Window();
window.Show();
Assert.Same(window, FocusManager.Instance.Current);
BuildAndShowContextMenu(window);
BuildAndShowContextMenu(window);
@ -453,7 +458,10 @@ namespace Avalonia.LeakTests
private IDisposable Start()
{
return UnitTestApplication.Start(TestServices.StyledWindow);
return UnitTestApplication.Start(TestServices.StyledWindow.With(
focusManager: new FocusManager(),
keyboardDevice: () => new KeyboardDevice(),
inputManager: new InputManager()));
}
private class Node

4
tests/Avalonia.UnitTests/MockWindowingPlatform.cs

@ -21,6 +21,10 @@ namespace Avalonia.UnitTests
{
var win = Mock.Of<IWindowImpl>(x => x.Scaling == 1);
var mock = Mock.Get(win);
mock.Setup(x => x.Show()).Callback(() =>
{
mock.Object.Activated?.Invoke();
});
mock.Setup(x => x.CreatePopup()).Returns(() =>
{
if (popupImpl != null)

Loading…
Cancel
Save