public void TestPopoverCleanupOnTargetHide() { DrawableWithPopover target = null; AddStep("add button", () => popoverContainer.Child = target = new DrawableWithPopover { Width = 200, Height = 30, Anchor = Anchor.Centre, Origin = Anchor.Centre, Text = "open", CreateContent = _ => new BasicPopover { Child = new SpriteText { Text = "This popover should be cleaned up when its button is hidden", } } }); AddStep("click button", () => { InputManager.MoveMouseTo(target); InputManager.Click(MouseButton.Left); }); AddAssert("popover created", () => this.ChildrenOfType <Popover>().Any()); AddStep("hide button", () => target.Hide()); AddUntilStep("no popover present", () => !this.ChildrenOfType <Popover>().Any()); }
public void TestPopoverEventHandling() { EventHandlingContainer eventHandlingContainer = null; DrawableWithPopover target = null; AddStep("add button", () => popoverContainer.Child = eventHandlingContainer = new EventHandlingContainer { RelativeSizeAxes = Axes.Both, Child = target = new DrawableWithPopover { Width = 200, Height = 30, Anchor = Anchor.Centre, Origin = Anchor.Centre, Text = "open", CreateContent = _ => new BasicPopover { Child = new SpriteText { Text = "This popover should be handle hover and click events", } } } }); AddStep("click button", () => { InputManager.MoveMouseTo(target); InputManager.Click(MouseButton.Left); }); AddAssert("container received hover", () => eventHandlingContainer.HoverReceived); AddAssert("popover created", () => this.ChildrenOfType <Popover>().Any()); AddStep("mouse over popover", () => { eventHandlingContainer.Reset(); InputManager.MoveMouseTo(this.ChildrenOfType <Popover>().Single().Body); }); AddAssert("container did not receive hover", () => !eventHandlingContainer.HoverReceived); AddStep("click on popover", () => InputManager.Click(MouseButton.Left)); AddAssert("container did not receive click", () => !eventHandlingContainer.ClickReceived); AddStep("dismiss popover", () => { InputManager.MoveMouseTo(eventHandlingContainer.ScreenSpaceDrawQuad.TopLeft + new Vector2(10)); InputManager.Click(MouseButton.Left); }); AddAssert("container received hover", () => eventHandlingContainer.HoverReceived); AddStep("click again", () => InputManager.Click(MouseButton.Left)); AddAssert("container received click", () => eventHandlingContainer.ClickReceived); }
public void TestAutomaticLayouting() { DrawableWithPopover target = null; AddStep("add button", () => popoverContainer.Child = target = new DrawableWithPopover { Width = 200, Height = 30, RelativePositionAxes = Axes.Both, Text = "open", CreateContent = _ => new BasicPopover { Child = new SpriteText { Text = "This popover follows its associated UI component", Size = new Vector2(400) } } }); AddSliderStep("move X", 0f, 1, 0, x => { if (target != null) { target.X = x; } }); AddSliderStep("move Y", 0f, 1, 0, y => { if (target != null) { target.Y = y; } }); AddSliderStep("container width", 0f, 1, 1, width => { if (popoverWrapper != null) { popoverWrapper.Width = width; } }); AddSliderStep("container height", 0f, 1, 1, height => { if (popoverWrapper != null) { popoverWrapper.Height = height; } }); }