fix: ruler click playhead update using available props onStop+onPlayPause

This commit is contained in:
2026-07-26 11:36:55 +07:00
parent f7b499cda9
commit 7601cc72c9
2 changed files with 6 additions and 16 deletions
+5 -15
View File
@@ -5858,23 +5858,13 @@ const beatSec = 60.0 / (parseInt(bpm) || 120);
const clickBeat = x / pixelsPerBeat;
const clickTime = clickBeat * beatSec;
if (clickTime >= 0) {
setSubTabs(prev => prev.map(s => s.id === st.id ? { ...s, currentTime: clickTime } : s));
setSubTabs(prev => prev.map(s => s.id === st.id ? { ...s, currentTime: clickTime, isPlaying: false } : s));
if (isPlaying) {
setSubTabs(prev => prev.map(s => s.id === st.id ? { ...s, currentTime: clickTime } : s));
onStop();
setTimeout(() => {
stopAllPlayback();
const sub = subTabs.find(s2 => s2.id === st.id);
if (sub) {
const ctx = getAudioContext();
startOffsetTimeRef.current = clickTime;
startAudioTimeRef.current = ctx.currentTime;
startBufferOffsetRef.current = clickTime * (sub.speed || 1.0);
schedulePianoRollMidi(sub, clickTime);
startSubTabPlayback(sub, clickTime);
setSubTabs(prev => prev.map(s => s.id === st.id ? { ...s, currentTime: clickTime, isPlaying: true } : s));
animationFrameIdRef.current = requestAnimationFrame(updatePlayhead);
}
}, 20);
setSubTabs(prev => prev.map(s => s.id === st.id ? { ...s, currentTime: clickTime } : s));
onPlayPause();
}, 40);
}
}
if (e.ctrlKey || e.metaKey) {