diff --git a/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs b/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs
index f75a3330e2..29553954fe 100644
--- a/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs
+++ b/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs
@@ -23,6 +23,9 @@ namespace osu.Game.Graphics.Containers
private Color4 handleColour = Color4.White;
+ ///
+ /// The colour of the drag handle.
+ ///
protected Color4 HandleColour
{
get => handleColour;
@@ -38,6 +41,11 @@ namespace osu.Game.Graphics.Containers
}
}
+ ///
+ /// Whether the drag handle should be shown.
+ ///
+ protected virtual bool ShowDragHandle => true;
+
private PlaylistItemHandle handle;
protected OsuRearrangeableListItem(TModel item)
@@ -50,6 +58,8 @@ namespace osu.Game.Graphics.Containers
[BackgroundDependencyLoader]
private void load()
{
+ Container handleContainer;
+
InternalChild = new GridContainer
{
RelativeSizeAxes = Axes.X,
@@ -58,7 +68,7 @@ namespace osu.Game.Graphics.Containers
{
new[]
{
- new Container
+ handleContainer = new Container
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
@@ -78,6 +88,9 @@ namespace osu.Game.Graphics.Containers
ColumnDimensions = new[] { new Dimension(GridSizeMode.AutoSize) },
RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }
};
+
+ if (!ShowDragHandle)
+ handleContainer.Alpha = 0;
}
protected override bool OnDragStart(DragStartEvent e)
@@ -107,7 +120,7 @@ namespace osu.Game.Graphics.Containers
protected abstract Drawable CreateContent();
- private class PlaylistItemHandle : SpriteIcon
+ public class PlaylistItemHandle : SpriteIcon
{
public bool HandlingDrag { get; private set; }
private bool isHovering;
diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
index 2bc593d779..7156839dfc 100644
--- a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
+++ b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
@@ -34,6 +34,8 @@ namespace osu.Game.Screens.Multi
public Action RequestSelection;
public Action RequestDeletion;
+ protected override bool ShowDragHandle => allowEdit;
+
private Container maskingContainer;
private Container difficultyIconContainer;
private LinkFlowContainer beatmapText;