public void Right_Clicking_On_Control_Twice_Re_Opens_ContextMenu() { using (Application()) { popupImpl.Setup(x => x.Show(true, false)).Verifiable(); popupImpl.Setup(x => x.Hide()).Verifiable(); var sut = new ContextMenu(); var target = new Panel { ContextMenu = sut }; var window = PreparedWindow(target); window.Show(); var overlay = LightDismissOverlayLayer.GetLightDismissOverlayLayer(window); _mouse.Click(target, MouseButton.Right); Assert.True(sut.IsOpen); _mouse.Down(overlay, MouseButton.Right); _mouse.Up(target, MouseButton.Right); Assert.True(sut.IsOpen); popupImpl.Verify(x => x.Hide(), Times.Once); popupImpl.Verify(x => x.Show(true, false), Times.Exactly(2)); } }
public void Cancelling_Closing_Leaves_ContextMenuOpen() { using (Application()) { popupImpl.Setup(x => x.Show(true, false)).Verifiable(); popupImpl.Setup(x => x.Hide()).Verifiable(); bool eventCalled = false; var sut = new ContextMenu(); var target = new Panel { ContextMenu = sut }; var window = PreparedWindow(target); var overlay = LightDismissOverlayLayer.GetLightDismissOverlayLayer(window); sut.ContextMenuClosing += (c, e) => { eventCalled = true; e.Cancel = true; }; window.Show(); _mouse.Click(target, MouseButton.Right); Assert.True(sut.IsOpen); _mouse.Down(overlay, MouseButton.Right); _mouse.Up(target, MouseButton.Right); Assert.True(eventCalled); Assert.True(sut.IsOpen); popupImpl.Verify(x => x.Show(true, false), Times.Once()); popupImpl.Verify(x => x.Hide(), Times.Never); } }
public void Light_Dismiss_Closes_Flyout() { using (CreateServicesWithFocus()) { var window = PreparedWindow(); window.Width = 100; window.Height = 100; var button = new Button { Height = 10, Width = 10, HorizontalAlignment = Layout.HorizontalAlignment.Left, VerticalAlignment = Layout.VerticalAlignment.Top }; window.Content = button; window.Show(); var f = new Flyout(); f.Content = new Border { Width = 10, Height = 10 }; f.ShowAt(window); var e = CreatePointerPressedEventArgs(window, new Point(90, 90)); var overlay = LightDismissOverlayLayer.GetLightDismissOverlayLayer(window); overlay.RaiseEvent(e); Assert.False(f.IsOpen); } }
public void Cancel_Light_Dismiss_Closing_Keeps_Flyout_Open() { using (Application()) { popupImpl.Setup(x => x.Show(true, false)).Verifiable(); popupImpl.Setup(x => x.Hide()).Verifiable(); var window = PreparedWindow(); window.Width = 100; window.Height = 100; var button = new Button { Height = 10, Width = 10, HorizontalAlignment = Layout.HorizontalAlignment.Left, VerticalAlignment = Layout.VerticalAlignment.Top }; window.Content = button; window.ApplyTemplate(); window.Show(); var tracker = 0; var c = new ContextMenu(); c.ContextMenuClosing += (s, e) => { tracker++; e.Cancel = true; }; button.ContextMenu = c; c.Open(button); var overlay = LightDismissOverlayLayer.GetLightDismissOverlayLayer(window); _mouse.Down(overlay, MouseButton.Left, new Point(90, 90)); _mouse.Up(button, MouseButton.Left, new Point(90, 90)); Assert.Equal(1, tracker); Assert.True(c.IsOpen); popupImpl.Verify(x => x.Hide(), Times.Never); popupImpl.Verify(x => x.Show(true, false), Times.Exactly(1)); } }
public void OverlayDismissEventPassThrough_Should_Pass_Event_To_Window_Contents() { using (CreateServices()) { var renderer = new Mock <IRenderer>(); var platform = AvaloniaLocator.Current.GetService <IWindowingPlatform>(); var windowImpl = Mock.Get(platform.CreateWindow()); windowImpl.Setup(x => x.CreateRenderer(It.IsAny <IRenderRoot>())).Returns(renderer.Object); var window = new Window(windowImpl.Object); window.ApplyTemplate(); var target = new Popup() { PlacementTarget = window, IsLightDismissEnabled = true, OverlayDismissEventPassThrough = true, }; var raised = 0; var border = new Border(); window.Content = border; renderer.Setup(x => x.HitTestFirst(new Point(10, 15), window, It.IsAny <Func <IVisual, bool> >())) .Returns(border); border.PointerPressed += (s, e) => { Assert.Same(border, e.Source); ++raised; }; target.Open(); Assert.True(target.IsOpen); var e = CreatePointerPressedEventArgs(window, new Point(10, 15)); var overlay = LightDismissOverlayLayer.GetLightDismissOverlayLayer(window); overlay.RaiseEvent(e); Assert.Equal(1, raised); Assert.False(target.IsOpen); } }
public void Cancel_Light_Dismiss_Closing_Keeps_Flyout_Open() { using (CreateServicesWithFocus()) { var window = PreparedWindow(); window.Width = 100; window.Height = 100; var button = new Button { Height = 10, Width = 10, HorizontalAlignment = Layout.HorizontalAlignment.Left, VerticalAlignment = Layout.VerticalAlignment.Top }; window.Content = button; window.Show(); var tracker = 0; var f = new Flyout(); f.Content = new Border { Width = 10, Height = 10 }; f.Closing += (s, e) => { tracker++; e.Cancel = true; }; f.ShowAt(window); var e = CreatePointerPressedEventArgs(window, new Point(90, 90)); var overlay = LightDismissOverlayLayer.GetLightDismissOverlayLayer(window); overlay.RaiseEvent(e); Assert.Equal(1, tracker); Assert.True(f.IsOpen); } }
public void Light_Dismiss_Closes_Flyout() { using (Application()) { popupImpl.Setup(x => x.Show(true, false)).Verifiable(); popupImpl.Setup(x => x.Hide()).Verifiable(); var window = PreparedWindow(); window.Width = 100; window.Height = 100; var button = new Button { Height = 10, Width = 10, HorizontalAlignment = Layout.HorizontalAlignment.Left, VerticalAlignment = Layout.VerticalAlignment.Top }; window.Content = button; window.ApplyTemplate(); window.Show(); var c = new ContextMenu(); c.PlacementMode = PlacementMode.Bottom; c.Open(button); var overlay = LightDismissOverlayLayer.GetLightDismissOverlayLayer(window); _mouse.Down(overlay, MouseButton.Left, new Point(90, 90)); _mouse.Up(button, MouseButton.Left, new Point(90, 90)); Assert.False(c.IsOpen); popupImpl.Verify(x => x.Hide(), Times.Exactly(1)); popupImpl.Verify(x => x.Show(true, false), Times.Exactly(1)); } }