diff --git a/osu-framework b/osu-framework
index cdb031c3a8..a24fd77ad5 160000
--- a/osu-framework
+++ b/osu-framework
@@ -1 +1 @@
-Subproject commit cdb031c3a8ef693cd71458c5e19c68127ab72938
+Subproject commit a24fd77ad5f69e133a84175ef79c4ab7f600316b
diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs
index 3ffd7754c1..d85026bb27 100644
--- a/osu.Game/Screens/Edit/Editor.cs
+++ b/osu.Game/Screens/Edit/Editor.cs
@@ -32,16 +32,11 @@ namespace osu.Game.Screens.Edit
Height = 40,
Children = new Drawable[]
{
- new Box
- {
- RelativeSizeAxes = Axes.Both,
- Colour = OsuColour.FromHex("111")
- },
new EditorMenuBar
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
- X = 100,
+ RelativeSizeAxes = Axes.Both,
Items = new[]
{
new EditorMenuBarItem("File")
diff --git a/osu.Game/Screens/Edit/Menus/EditorMenuBar.cs b/osu.Game/Screens/Edit/Menus/EditorMenuBar.cs
index bb349b1531..818eb37bfb 100644
--- a/osu.Game/Screens/Edit/Menus/EditorMenuBar.cs
+++ b/osu.Game/Screens/Edit/Menus/EditorMenuBar.cs
@@ -19,8 +19,20 @@ namespace osu.Game.Screens.Edit.Menus
public EditorMenuBar()
: base(Direction.Horizontal, true)
{
- ItemsContainer.Padding = new MarginPadding(0);
+ RelativeSizeAxes = Axes.X;
+
+ ItemsContainer.Padding = new MarginPadding { Left = 100 };
BackgroundColour = Color4.Transparent;
+
+ AddRangeInternal(new Drawable[]
+ {
+ new Box
+ {
+ RelativeSizeAxes = Axes.Both,
+ Colour = OsuColour.FromHex("111"),
+ Depth = float.MaxValue
+ },
+ });
}
protected override Framework.Graphics.UserInterface.Menu CreateSubMenu() => new SubMenu();
@@ -32,9 +44,32 @@ namespace osu.Game.Screens.Edit.Menus
private Color4 openedForegroundColour;
private Color4 openedBackgroundColour;
+ public override bool ReceiveMouseInputAt(Vector2 screenSpacePos) => parentSizedBox.ReceiveMouseInputAt(screenSpacePos);
+
+ ///
+ /// A box with width equal to this 's width, and height equal to the parent height.
+ ///
+ private readonly Box parentSizedBox;
+
public DrawableEditorBarMenuItem(MenuItem item)
: base(item)
{
+ Anchor = Anchor.CentreLeft;
+ Origin = Anchor.CentreLeft;
+
+ AddInternal(parentSizedBox = new Box
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ RelativeSizeAxes = Axes.X,
+ BypassAutoSizeAxes = Axes.Both,
+ Alpha = 0,
+ });
+ }
+
+ public override void SetFlowDirection(Direction direction)
+ {
+ AutoSizeAxes = Axes.Both;
}
[BackgroundDependencyLoader]
@@ -62,6 +97,13 @@ namespace osu.Game.Screens.Edit.Menus
base.UpdateForegroundColour();
}
+ protected override void Update()
+ {
+ base.Update();
+
+ parentSizedBox.Height = Parent.DrawHeight;
+ }
+
protected override Drawable CreateBackground() => new Container
{
RelativeSizeAxes = Axes.Both,
@@ -75,6 +117,17 @@ namespace osu.Game.Screens.Edit.Menus
Child = new Box { RelativeSizeAxes = Axes.Both }
}
};
+
+ protected override DrawableOsuMenuItem.TextContainer CreateTextContainer() => new TextContainer();
+
+ private new class TextContainer : DrawableOsuMenuItem.TextContainer
+ {
+ public TextContainer()
+ {
+ NormalText.TextSize = BoldText.TextSize = 14;
+ NormalText.Margin = BoldText.Margin = new MarginPadding { Horizontal = 10, Vertical = MARGIN_VERTICAL };
+ }
+ }
}
private class SubMenu : OsuMenu
diff --git a/osu.Game/Tests/Visual/TestCaseEditorMenuBar.cs b/osu.Game/Tests/Visual/TestCaseEditorMenuBar.cs
index 8b5132fe08..b0c21b6b8c 100644
--- a/osu.Game/Tests/Visual/TestCaseEditorMenuBar.cs
+++ b/osu.Game/Tests/Visual/TestCaseEditorMenuBar.cs
@@ -1,7 +1,10 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+using System;
+using System.Collections.Generic;
using osu.Framework.Graphics;
+using osu.Framework.Graphics.Containers;
using osu.Game.Graphics.UserInterface;
using osu.Game.Screens.Edit.Menus;
@@ -9,74 +12,82 @@ namespace osu.Game.Tests.Visual
{
public class TestCaseEditorMenuBar : OsuTestCase
{
+ public override IReadOnlyList RequiredTypes => new[] { typeof(EditorMenuBar), typeof(ScreenSelectionTabControl) };
+
public TestCaseEditorMenuBar()
{
- Add(new EditorMenuBar
+ Add(new Container
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
+ RelativeSizeAxes = Axes.X,
+ Height = 50,
Y = 50,
- Items = new[]
+ Child = new EditorMenuBar
{
- new EditorMenuBarItem("File")
+ RelativeSizeAxes = Axes.Both,
+ Items = new[]
{
- Items = new[]
+ new EditorMenuBarItem("File")
{
- new EditorMenuItem("Clear All Notes"),
- new EditorMenuItem("Open Difficulty..."),
- new EditorMenuItem("Save"),
- new EditorMenuItem("Create a new Difficulty..."),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Revert to Saved"),
- new EditorMenuItem("Revert to Saved (Full)"),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Test Beatmap"),
- new EditorMenuItem("Open AiMod"),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Upload Beatmap..."),
- new EditorMenuItem("Export Package"),
- new EditorMenuItem("Export Map Package"),
- new EditorMenuItem("Import from..."),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Open Song Folder"),
- new EditorMenuItem("Open .osu in Notepad"),
- new EditorMenuItem("Open .osb in Notepad"),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Exit"),
- }
- },
- new EditorMenuBarItem("Timing")
- {
- Items = new[]
+ Items = new[]
+ {
+ new EditorMenuItem("Clear All Notes"),
+ new EditorMenuItem("Open Difficulty..."),
+ new EditorMenuItem("Save"),
+ new EditorMenuItem("Create a new Difficulty..."),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Revert to Saved"),
+ new EditorMenuItem("Revert to Saved (Full)"),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Test Beatmap"),
+ new EditorMenuItem("Open AiMod"),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Upload Beatmap..."),
+ new EditorMenuItem("Export Package"),
+ new EditorMenuItem("Export Map Package"),
+ new EditorMenuItem("Import from..."),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Open Song Folder"),
+ new EditorMenuItem("Open .osu in Notepad"),
+ new EditorMenuItem("Open .osb in Notepad"),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Exit"),
+ }
+ },
+ new EditorMenuBarItem("Timing")
{
- new EditorMenuItem("Time Signature"),
- new EditorMenuItem("Metronome Clicks"),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Add Timing Section"),
- new EditorMenuItem("Add Inheriting Section"),
- new EditorMenuItem("Reset Current Section"),
- new EditorMenuItem("Delete Timing Section"),
- new EditorMenuItem("Resnap Current Section"),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Timing Setup"),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Resnap All Notes", MenuItemType.Destructive),
- new EditorMenuItem("Move all notes in time...", MenuItemType.Destructive),
- new EditorMenuItem("Recalculate Slider Lengths", MenuItemType.Destructive),
- new EditorMenuItem("Delete All Timing Sections", MenuItemType.Destructive),
- new EditorMenuItemSpacer(),
- new EditorMenuItem("Set Current Position as Preview Point"),
- }
- },
- new EditorMenuBarItem("Testing")
- {
- Items = new[]
+ Items = new[]
+ {
+ new EditorMenuItem("Time Signature"),
+ new EditorMenuItem("Metronome Clicks"),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Add Timing Section"),
+ new EditorMenuItem("Add Inheriting Section"),
+ new EditorMenuItem("Reset Current Section"),
+ new EditorMenuItem("Delete Timing Section"),
+ new EditorMenuItem("Resnap Current Section"),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Timing Setup"),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Resnap All Notes", MenuItemType.Destructive),
+ new EditorMenuItem("Move all notes in time...", MenuItemType.Destructive),
+ new EditorMenuItem("Recalculate Slider Lengths", MenuItemType.Destructive),
+ new EditorMenuItem("Delete All Timing Sections", MenuItemType.Destructive),
+ new EditorMenuItemSpacer(),
+ new EditorMenuItem("Set Current Position as Preview Point"),
+ }
+ },
+ new EditorMenuBarItem("Testing")
{
- new EditorMenuItem("Item 1"),
- new EditorMenuItem("Item 2"),
- new EditorMenuItem("Item 3"),
- }
- },
+ Items = new[]
+ {
+ new EditorMenuItem("Item 1"),
+ new EditorMenuItem("Item 2"),
+ new EditorMenuItem("Item 3"),
+ }
+ },
+ }
}
});
}