diff --git a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs
index 4b57e1e92d..11e9ecddc6 100644
--- a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs
+++ b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs
@@ -7,6 +7,7 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Input.Events;
+using osu.Framework.Threading;
using osu.Framework.Timing;
using osu.Game.Beatmaps;
using osu.Game.Graphics;
@@ -43,17 +44,23 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts
return true;
}
+ private ScheduledDelegate scheduledSeek;
+
///
/// Seeks the to the time closest to a position on the screen relative to the .
///
/// The position in screen coordinates.
private void seekToPosition(Vector2 screenPosition)
{
- if (Beatmap.Value == null)
- return;
+ scheduledSeek?.Cancel();
+ scheduledSeek = Schedule(() =>
+ {
+ if (Beatmap.Value == null)
+ return;
- float markerPos = MathHelper.Clamp(ToLocalSpace(screenPosition).X, 0, DrawWidth);
- adjustableClock.Seek(markerPos / DrawWidth * Beatmap.Value.Track.Length);
+ float markerPos = MathHelper.Clamp(ToLocalSpace(screenPosition).X, 0, DrawWidth);
+ adjustableClock.Seek(markerPos / DrawWidth * Beatmap.Value.Track.Length);
+ });
}
protected override void Update()