summaryrefslogtreecommitdiff
path: root/apps/web/src/hooks/timeline
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-02-25 01:37:56 +0100
committerMaze Winther <mazewinther@gmail.com>2026-02-25 01:37:56 +0100
commitf75b5d3fd28349ee69f03be34c1316122992c283 (patch)
tree45e233d9b4c83b02be2a7bfe13ea943a676bd9be /apps/web/src/hooks/timeline
parent4d77e3f2bb9884ad9e43761eaf0ede8c1a9cfccc (diff)
downloadopencut-f75b5d3fd28349ee69f03be34c1316122992c283.tar.gz
fix a ton of issues + improvement
Diffstat (limited to 'apps/web/src/hooks/timeline')
-rw-r--r--apps/web/src/hooks/timeline/use-timeline-playhead.ts20
1 files changed, 13 insertions, 7 deletions
diff --git a/apps/web/src/hooks/timeline/use-timeline-playhead.ts b/apps/web/src/hooks/timeline/use-timeline-playhead.ts
index d6bb29e2..1426a003 100644
--- a/apps/web/src/hooks/timeline/use-timeline-playhead.ts
+++ b/apps/web/src/hooks/timeline/use-timeline-playhead.ts
@@ -47,7 +47,13 @@ export function useTimelinePlayhead({
isScrubbing && scrubTime !== null ? scrubTime : currentTime;
const handleScrub = useCallback(
- ({ event }: { event: MouseEvent | React.MouseEvent }) => {
+ ({
+ event,
+ snappingEnabled = true,
+ }: {
+ event: MouseEvent | React.MouseEvent;
+ snappingEnabled?: boolean;
+ }) => {
const ruler = rulerRef.current;
if (!ruler) return;
const rulerRect = ruler.getBoundingClientRect();
@@ -76,7 +82,7 @@ export function useTimelinePlayhead({
fps: framesPerSecond,
});
- const shouldSnap = !isShiftHeldRef.current;
+ const shouldSnap = snappingEnabled && !isShiftHeldRef.current;
const time = (() => {
if (!shouldSnap) return frameTime;
const tracks = editor.timeline.getTracks();
@@ -133,10 +139,10 @@ export function useTimelinePlayhead({
setIsDraggingRuler(true);
setHasDraggedRuler(false);
- editor.playback.setScrubbing({ isScrubbing: true });
- handleScrub({ event });
- },
- [handleScrub, playheadRef, editor.playback],
+ editor.playback.setScrubbing({ isScrubbing: true });
+ handleScrub({ event, snappingEnabled: false });
+ },
+ [handleScrub, playheadRef, editor.playback],
);
const handlePlayheadMouseDownEvent = useCallback(
@@ -184,7 +190,7 @@ export function useTimelinePlayhead({
if (isDraggingRuler) {
setIsDraggingRuler(false);
if (!hasDraggedRuler) {
- handleScrub({ event });
+ handleScrub({ event, snappingEnabled: false });
}
setHasDraggedRuler(false);
}