diff --git a/osu-framework b/osu-framework index 2958d6fda1..2cb3e59c8b 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 2958d6fda1be252a0f479609090e72814b177c91 +Subproject commit 2cb3e59c8bc7e67edef4dfe7f9c7dfc01db386a7 diff --git a/osu.Desktop.Tests/Visual/TestCaseContextMenu.cs b/osu.Desktop.Tests/Visual/TestCaseContextMenu.cs index 2ac3a28bd4..0d9c5e7ed1 100644 --- a/osu.Desktop.Tests/Visual/TestCaseContextMenu.cs +++ b/osu.Desktop.Tests/Visual/TestCaseContextMenu.cs @@ -3,8 +3,9 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics.Cursor; +using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics.UserInterface; using OpenTK; using OpenTK.Graphics; @@ -66,30 +67,30 @@ protected override void LoadComplete() ); } - private class MyContextMenuContainer : Container, IHasOsuContextMenu + private class MyContextMenuContainer : Container, IHasContextMenu { - public OsuContextMenuItem[] ContextMenuItems => new[] + public MenuItem[] ContextMenuItems => new MenuItem[] { - new OsuContextMenuItem(@"Some option"), - new OsuContextMenuItem(@"Highlighted option", MenuItemType.Highlighted), - new OsuContextMenuItem(@"Another option"), - new OsuContextMenuItem(@"Choose me please"), - new OsuContextMenuItem(@"And me too"), - new OsuContextMenuItem(@"Trying to fill"), - new OsuContextMenuItem(@"Destructive option", MenuItemType.Destructive), + new OsuMenuItem(@"Some option"), + new OsuMenuItem(@"Highlighted option", MenuItemType.Highlighted), + new OsuMenuItem(@"Another option"), + new OsuMenuItem(@"Choose me please"), + new OsuMenuItem(@"And me too"), + new OsuMenuItem(@"Trying to fill"), + new OsuMenuItem(@"Destructive option", MenuItemType.Destructive), }; } - private class AnotherContextMenuContainer : Container, IHasOsuContextMenu + private class AnotherContextMenuContainer : Container, IHasContextMenu { - public OsuContextMenuItem[] ContextMenuItems => new[] + public MenuItem[] ContextMenuItems => new MenuItem[] { - new OsuContextMenuItem(@"Simple option"), - new OsuContextMenuItem(@"Simple very very long option"), - new OsuContextMenuItem(@"Change width", MenuItemType.Highlighted, () => this.ResizeWidthTo(Width * 2, 100, Easing.OutQuint)), - new OsuContextMenuItem(@"Change height", MenuItemType.Highlighted, () => this.ResizeHeightTo(Height * 2, 100, Easing.OutQuint)), - new OsuContextMenuItem(@"Change width back", MenuItemType.Destructive, () => this.ResizeWidthTo(Width / 2, 100, Easing.OutQuint)), - new OsuContextMenuItem(@"Change height back", MenuItemType.Destructive, () => this.ResizeHeightTo(Height / 2, 100, Easing.OutQuint)), + new OsuMenuItem(@"Simple option"), + new OsuMenuItem(@"Simple very very long option"), + new OsuMenuItem(@"Change width", MenuItemType.Highlighted, () => this.ResizeWidthTo(Width * 2, 100, Easing.OutQuint)), + new OsuMenuItem(@"Change height", MenuItemType.Highlighted, () => this.ResizeHeightTo(Height * 2, 100, Easing.OutQuint)), + new OsuMenuItem(@"Change width back", MenuItemType.Destructive, () => this.ResizeWidthTo(Width / 2, 100, Easing.OutQuint)), + new OsuMenuItem(@"Change height back", MenuItemType.Destructive, () => this.ResizeHeightTo(Height / 2, 100, Easing.OutQuint)), }; } } diff --git a/osu.Game/Graphics/Cursor/IHasOsuContextMenu.cs b/osu.Game/Graphics/Cursor/IHasOsuContextMenu.cs deleted file mode 100644 index 6fb1a3d31f..0000000000 --- a/osu.Game/Graphics/Cursor/IHasOsuContextMenu.cs +++ /dev/null @@ -1,9 +0,0 @@ -using osu.Framework.Graphics.Cursor; -using osu.Game.Graphics.UserInterface; - -namespace osu.Game.Graphics.Cursor -{ - public interface IHasOsuContextMenu : IHasContextMenu - { - } -} diff --git a/osu.Game/Graphics/Cursor/OsuContextMenuContainer.cs b/osu.Game/Graphics/Cursor/OsuContextMenuContainer.cs index 4ee3e31707..1ece10bc60 100644 --- a/osu.Game/Graphics/Cursor/OsuContextMenuContainer.cs +++ b/osu.Game/Graphics/Cursor/OsuContextMenuContainer.cs @@ -7,8 +7,8 @@ namespace osu.Game.Graphics.Cursor { - public class OsuContextMenuContainer : ContextMenuContainer + public class OsuContextMenuContainer : ContextMenuContainer { - protected override Menu CreateMenu() => new OsuContextMenu(); + protected override Menu CreateMenu() => new OsuContextMenu(); } } \ No newline at end of file diff --git a/osu.Game/Graphics/UserInterface/OsuContextMenu.cs b/osu.Game/Graphics/UserInterface/OsuContextMenu.cs index 4ec349edd7..9a2917cd66 100644 --- a/osu.Game/Graphics/UserInterface/OsuContextMenu.cs +++ b/osu.Game/Graphics/UserInterface/OsuContextMenu.cs @@ -1,6 +1,7 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System; using OpenTK.Graphics; using osu.Framework.Allocation; using osu.Framework.Audio; @@ -15,8 +16,7 @@ namespace osu.Game.Graphics.UserInterface { - public class OsuContextMenu : OsuMenu - where TItem : OsuContextMenuItem + public class OsuContextMenu : OsuMenu { private const int fade_duration = 250; @@ -42,7 +42,7 @@ private void load(OsuColour colours) protected override MarginPadding ItemFlowContainerPadding => new MarginPadding { Vertical = DrawableOsuContextMenuItem.MARGIN_VERTICAL }; - protected override DrawableMenuItem CreateDrawableMenuItem(TItem item) => new DrawableOsuContextMenuItem(this, item); + protected override DrawableMenuItem CreateDrawableMenuItem(MenuItem item) => new DrawableOsuContextMenuItem(item); #region DrawableOsuContextMenuItem private class DrawableOsuContextMenuItem : DrawableMenuItem @@ -57,9 +57,11 @@ private class DrawableOsuContextMenuItem : DrawableMenuItem private TextContainer text; - public DrawableOsuContextMenuItem(Menu menu, TItem item) + public DrawableOsuContextMenuItem(MenuItem item) : base(item) { + if (!(Item is OsuMenuItem)) + throw new ArgumentException($"{nameof(item)} must be a {nameof(OsuMenuItem)}."); } [BackgroundDependencyLoader] @@ -76,7 +78,7 @@ private void load(AudioManager audio) private void updateTextColour() { - switch (Item.Type) + switch (((OsuMenuItem)Item).Type) { case MenuItemType.Standard: text.Colour = Color4.White; diff --git a/osu.Game/Graphics/UserInterface/OsuDropdown.cs b/osu.Game/Graphics/UserInterface/OsuDropdown.cs index d67a995e67..9c816b8230 100644 --- a/osu.Game/Graphics/UserInterface/OsuDropdown.cs +++ b/osu.Game/Graphics/UserInterface/OsuDropdown.cs @@ -68,7 +68,7 @@ protected override void UpdateMenuHeight() public readonly Bindable AccentColour = new Bindable(); - protected override DrawableMenuItem CreateDrawableMenuItem(DropdownMenuItem item) + protected override DrawableMenuItem CreateDrawableMenuItem(MenuItem item) { var newItem = new DrawableOsuDropdownMenuItem(item); newItem.AccentColour.BindTo(AccentColour); @@ -86,7 +86,7 @@ protected class DrawableOsuDropdownMenuItem : DrawableDropdownMenuItem private Color4 nonAccentHoverColour; private Color4 nonAccentSelectedColour; - public DrawableOsuDropdownMenuItem(DropdownMenuItem item) + public DrawableOsuDropdownMenuItem(MenuItem item) : base(item) { Foreground.Padding = new MarginPadding(2); diff --git a/osu.Game/Graphics/UserInterface/OsuMenu.cs b/osu.Game/Graphics/UserInterface/OsuMenu.cs index 0c5bfa2947..6b64e9e367 100644 --- a/osu.Game/Graphics/UserInterface/OsuMenu.cs +++ b/osu.Game/Graphics/UserInterface/OsuMenu.cs @@ -8,8 +8,7 @@ namespace osu.Game.Graphics.UserInterface { - public class OsuMenu : Menu - where TItem : MenuItem + public class OsuMenu : Menu { public OsuMenu() { diff --git a/osu.Game/Graphics/UserInterface/OsuContextMenuItem.cs b/osu.Game/Graphics/UserInterface/OsuMenuItem.cs similarity index 65% rename from osu.Game/Graphics/UserInterface/OsuContextMenuItem.cs rename to osu.Game/Graphics/UserInterface/OsuMenuItem.cs index bf00208b88..1f78666d20 100644 --- a/osu.Game/Graphics/UserInterface/OsuContextMenuItem.cs +++ b/osu.Game/Graphics/UserInterface/OsuMenuItem.cs @@ -6,17 +6,17 @@ namespace osu.Game.Graphics.UserInterface { - public class OsuContextMenuItem : MenuItem + public class OsuMenuItem : MenuItem { public readonly MenuItemType Type; - public OsuContextMenuItem(string text, MenuItemType type = MenuItemType.Standard) + public OsuMenuItem(string text, MenuItemType type = MenuItemType.Standard) : base(text) { Type = type; } - public OsuContextMenuItem(string text, MenuItemType type, Action action) + public OsuMenuItem(string text, MenuItemType type, Action action) : base(text, action) { Type = type; diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index faa7b269bb..32d2bc7c53 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -179,16 +179,16 @@ public OsuTabDropdownMenu() MaxHeight = 400; } - protected override DrawableMenuItem CreateDrawableMenuItem(DropdownMenuItem item) + protected override DrawableMenuItem CreateDrawableMenuItem(MenuItem item) { - var result = new DrawableOsuTabDropdownMenuItem(this, item); + var result = new DrawableOsuTabDropdownMenuItem(item); result.AccentColour.BindTo(AccentColour); return result; } private class DrawableOsuTabDropdownMenuItem : DrawableOsuDropdownMenuItem { - public DrawableOsuTabDropdownMenuItem(Menu> menu, DropdownMenuItem item) + public DrawableOsuTabDropdownMenuItem(MenuItem item) : base(item) { ForegroundColourHover = Color4.Black; diff --git a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs index 609b4b1e16..cf12c8a8e8 100644 --- a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs @@ -308,11 +308,11 @@ private void load(OsuColour colours) protected override MarginPadding ItemFlowContainerPadding => new MarginPadding(); - protected override DrawableMenuItem CreateDrawableMenuItem(DropdownMenuItem item) => new DrawableUserDropdownMenuItem(this, item); + protected override DrawableMenuItem CreateDrawableMenuItem(MenuItem item) => new DrawableUserDropdownMenuItem(item); private class DrawableUserDropdownMenuItem : DrawableOsuDropdownMenuItem { - public DrawableUserDropdownMenuItem(Menu> menu, DropdownMenuItem item) + public DrawableUserDropdownMenuItem(MenuItem item) : base(item) { Foreground.Padding = new MarginPadding { Top = 5, Bottom = 5, Left = 10, Right = 5 }; diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 0c710fd242..325cfba986 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -84,7 +84,6 @@ - @@ -92,7 +91,7 @@ - +