diff --git a/osu.Game/Graphics/Containers/OsuRearrangeableListContainer.cs b/osu.Game/Graphics/Containers/OsuRearrangeableListContainer.cs
index 47aed1c500..1048fd094c 100644
--- a/osu.Game/Graphics/Containers/OsuRearrangeableListContainer.cs
+++ b/osu.Game/Graphics/Containers/OsuRearrangeableListContainer.cs
@@ -12,13 +12,13 @@ namespace osu.Game.Graphics.Containers
///
/// Whether any item is currently being dragged. Used to hide other items' drag handles.
///
- private readonly BindableBool playlistDragActive = new BindableBool();
+ protected readonly BindableBool DragActive = new BindableBool();
protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer();
protected sealed override RearrangeableListItem CreateDrawable(TModel item) => CreateOsuDrawable(item).With(d =>
{
- d.PlaylistDragActive.BindTo(playlistDragActive);
+ d.DragActive.BindTo(DragActive);
});
protected abstract OsuRearrangeableListItem CreateOsuDrawable(TModel item);
diff --git a/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs b/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs
index 29553954fe..9cdcb19a81 100644
--- a/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs
+++ b/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs
@@ -19,7 +19,7 @@ namespace osu.Game.Graphics.Containers
///
/// Whether any item is currently being dragged. Used to hide other items' drag handles.
///
- public readonly BindableBool PlaylistDragActive = new BindableBool();
+ public readonly BindableBool DragActive = new BindableBool();
private Color4 handleColour = Color4.White;
@@ -44,8 +44,9 @@ namespace osu.Game.Graphics.Containers
///
/// Whether the drag handle should be shown.
///
- protected virtual bool ShowDragHandle => true;
+ protected readonly Bindable ShowDragHandle = new Bindable();
+ private Container handleContainer;
private PlaylistItemHandle handle;
protected OsuRearrangeableListItem(TModel item)
@@ -58,8 +59,6 @@ namespace osu.Game.Graphics.Containers
[BackgroundDependencyLoader]
private void load()
{
- Container handleContainer;
-
InternalChild = new GridContainer
{
RelativeSizeAxes = Axes.X,
@@ -88,9 +87,12 @@ namespace osu.Game.Graphics.Containers
ColumnDimensions = new[] { new Dimension(GridSizeMode.AutoSize) },
RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }
};
+ }
- if (!ShowDragHandle)
- handleContainer.Alpha = 0;
+ protected override void LoadComplete()
+ {
+ base.LoadComplete();
+ ShowDragHandle.BindValueChanged(show => handleContainer.Alpha = show.NewValue ? 1 : 0, true);
}
protected override bool OnDragStart(DragStartEvent e)
@@ -98,13 +100,13 @@ namespace osu.Game.Graphics.Containers
if (!base.OnDragStart(e))
return false;
- PlaylistDragActive.Value = true;
+ DragActive.Value = true;
return true;
}
protected override void OnDragEnd(DragEndEvent e)
{
- PlaylistDragActive.Value = false;
+ DragActive.Value = false;
base.OnDragEnd(e);
}
@@ -112,7 +114,7 @@ namespace osu.Game.Graphics.Containers
protected override bool OnHover(HoverEvent e)
{
- handle.UpdateHoverState(IsDragged || !PlaylistDragActive.Value);
+ handle.UpdateHoverState(IsDragged || !DragActive.Value);
return base.OnHover(e);
}
diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
index c0892235f2..b007e0349d 100644
--- a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
+++ b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
@@ -37,8 +37,6 @@ namespace osu.Game.Screens.Multi
public readonly Bindable SelectedItem = new Bindable();
- protected override bool ShowDragHandle => allowEdit;
-
private Container maskingContainer;
private Container difficultyIconContainer;
private LinkFlowContainer beatmapText;
@@ -63,12 +61,13 @@ namespace osu.Game.Screens.Multi
// TODO: edit support should be moved out into a derived class
this.allowEdit = allowEdit;
-
this.allowSelection = allowSelection;
beatmap.BindTo(item.Beatmap);
ruleset.BindTo(item.Ruleset);
requiredMods.BindTo(item.RequiredMods);
+
+ ShowDragHandle.Value = allowEdit;
}
[BackgroundDependencyLoader]