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);
        }
Esempio n. 3
0
        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;
                }
            });
        }