public void TestUnloadWithOffscreenParent()
        {
            Container parent = null;
            DelayedLoadUnloadWrapper wrapper = null;

            AddStep("add panel", () =>
            {
                Add(parent = new Container
                {
                    Anchor  = Anchor.Centre,
                    Origin  = Anchor.Centre,
                    Size    = new Vector2(128),
                    Masking = true,
                    Child   = wrapper = new DelayedLoadUnloadWrapper(() => new TestBox {
                        RelativeSizeAxes = Axes.Both
                    }, 0, 1000)
                });
            });

            AddUntilStep("wait for load", () => wrapper.Content?.IsLoaded == true);
            AddStep("move parent offscreen", () => parent.X = 1000000); // Should be offscreen
            AddUntilStep("wait for unload", () => wrapper.Content?.IsLoaded != true);
        }
示例#2
0
        public void TestUnloadWithParentRemovedFromHierarchy()
        {
            Container parent = null;
            DelayedLoadUnloadWrapper wrapper = null;

            AddStep("add panel", () =>
            {
                Add(parent = new Container
                {
                    Anchor  = Anchor.Centre,
                    Origin  = Anchor.Centre,
                    Size    = new Vector2(128),
                    Masking = true,
                    Child   = wrapper = new DelayedLoadUnloadWrapper(() => new TestBox {
                        RelativeSizeAxes = Axes.Both
                    }, 0, 1000)
                });
            });

            AddUntilStep("wait for load", () => wrapper.Content?.IsLoaded == true);
            AddStep("remove parent", () => Remove(parent));
            AddUntilStep("wait for unload", () => wrapper.Content?.IsLoaded != true);
        }
示例#3
0
        private void load()
        {
            Masking      = true;
            BorderColour = colourProvider?.Light1 ?? colours.GreyVioletLighter;

            AddRange(new[]
            {
                new Box
                {
                    RelativeSizeAxes = Axes.Both,
                    Colour           = colourProvider?.Background5 ?? colours.Gray1
                },
                Background = new DelayedLoadUnloadWrapper(() => new UserCoverBackground
                {
                    RelativeSizeAxes = Axes.Both,
                    Anchor           = Anchor.Centre,
                    Origin           = Anchor.Centre,
                    User             = User,
                }, 300, 5000)
                {
                    Anchor           = Anchor.CentreRight,
                    Origin           = Anchor.CentreRight,
                    RelativeSizeAxes = Axes.Both,
                },
                CreateLayout()
            });

            Status.ValueChanged   += status => displayStatus(status.NewValue, Activity.Value);
            Activity.ValueChanged += activity => displayStatus(Status.Value, activity.NewValue);

            base.Action = ViewProfile = () =>
            {
                Action?.Invoke();
                profileOverlay?.ShowUser(User);
            };
        }