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) if (scope != null)
{ {
FocusManager.Instance.SetFocusScope(scope); FocusManager.Instance?.SetFocusScope(scope);
} }
IsActive = true; IsActive = true;

10
tests/Avalonia.LeakTests/ControlTests.cs

@ -5,6 +5,7 @@ using System.Runtime.Remoting.Contexts;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.Templates; using Avalonia.Controls.Templates;
using Avalonia.Diagnostics; using Avalonia.Diagnostics;
using Avalonia.Input;
using Avalonia.Layout; using Avalonia.Layout;
using Avalonia.Media; using Avalonia.Media;
using Avalonia.Platform; using Avalonia.Platform;
@ -441,6 +442,10 @@ namespace Avalonia.LeakTests
} }
var window = new Window(); var window = new Window();
window.Show();
Assert.Same(window, FocusManager.Instance.Current);
BuildAndShowContextMenu(window); BuildAndShowContextMenu(window);
BuildAndShowContextMenu(window); BuildAndShowContextMenu(window);
@ -453,7 +458,10 @@ namespace Avalonia.LeakTests
private IDisposable Start() 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 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 win = Mock.Of<IWindowImpl>(x => x.Scaling == 1);
var mock = Mock.Get(win); var mock = Mock.Get(win);
mock.Setup(x => x.Show()).Callback(() =>
{
mock.Object.Activated?.Invoke();
});
mock.Setup(x => x.CreatePopup()).Returns(() => mock.Setup(x => x.CreatePopup()).Returns(() =>
{ {
if (popupImpl != null) if (popupImpl != null)

Loading…
Cancel
Save