diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/SliderTailPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/SliderTailPiece.cs
index 7d39f04596..2ebdf87606 100644
--- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/SliderTailPiece.cs
+++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/SliderTailPiece.cs
@@ -20,6 +20,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
{
public partial class SliderTailPiece : SliderCircleOverlay
{
+ ///
+ /// Whether this slider tail is draggable, changing the distance of the slider.
+ ///
+ public bool IsDraggable { get; set; }
+
///
/// Whether this is currently being dragged.
///
@@ -60,7 +65,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
{
Color4 colour = colours.Yellow;
- if (IsHovered && inputManager.CurrentState.Keyboard.ShiftPressed
+ if (IsHovered && IsDraggable
&& !inputManager.HoveredDrawables.Any(o => o is PathControlPointPiece))
colour = colour.Lighten(1);
@@ -69,7 +74,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
protected override bool OnDragStart(DragStartEvent e)
{
- if (e.Button == MouseButton.Right || !inputManager.CurrentState.Keyboard.ShiftPressed)
+ if (e.Button == MouseButton.Right || !IsDraggable)
return false;
isDragging = true;
@@ -103,6 +108,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
trimExcessControlPoints(Slider.Path);
isDragging = false;
+ IsDraggable = false;
editorBeatmap?.EndChange();
}
diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs
index 2c239a40c8..4a949f5b48 100644
--- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs
+++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs
@@ -409,6 +409,10 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders
addControlPoint(rightClickPosition);
changeHandler?.EndChange();
}),
+ new OsuMenuItem("Adjust distance", MenuItemType.Standard, () =>
+ {
+ TailPiece.IsDraggable = true;
+ }),
new OsuMenuItem("Convert to stream", MenuItemType.Destructive, convertToStream),
};