diff --git a/apps/desktop/src/routes/editor/Timeline/ClipTrack.tsx b/apps/desktop/src/routes/editor/Timeline/ClipTrack.tsx index 5bb449c864..051b671b0f 100644 --- a/apps/desktop/src/routes/editor/Timeline/ClipTrack.tsx +++ b/apps/desktop/src/routes/editor/Timeline/ClipTrack.tsx @@ -421,7 +421,8 @@ export function ClipTrack( const fraction = (e.clientX - rect.left) / rect.width; const seg = segment(); - const splitTime = fraction * (seg.end - seg.start); + const splitTime = + (fraction * (seg.end - seg.start)) / seg.timescale; projectActions.splitClipSegment(prevDuration() + splitTime); } else { diff --git a/apps/desktop/src/routes/editor/Timeline/TrackManager.tsx b/apps/desktop/src/routes/editor/Timeline/TrackManager.tsx index e9bcd6f529..dfb3ef5b15 100644 --- a/apps/desktop/src/routes/editor/Timeline/TrackManager.tsx +++ b/apps/desktop/src/routes/editor/Timeline/TrackManager.tsx @@ -57,7 +57,7 @@ export function TrackManager(props: { ref={(el) => { addButton = el; }} - class="flex h-[3.25rem] w-[3.5rem] items-center justify-center rounded-xl border border-gray-4/70 bg-gray-2/60 text-sm font-medium text-gray-12 transition-colors duration-150 hover:bg-gray-3 dark:border-gray-4/60 dark:bg-gray-3/40 shadow-[0_4px_16px_-12px_rgba(0,0,0,0.8)]" + class="flex h-[3.25rem] w-[3.5rem] items-center justify-center rounded-xl border border-gray-4/70 text-sm font-medium text-gray-12 transition-colors duration-150 bg-gray-1 hover:bg-gray-3 dark:border-gray-4/60 dark:bg-gray-3/40 shadow-[0_4px_16px_-12px_rgba(0,0,0,0.8)]" onClick={handleOpenMenu} onMouseDown={(e) => e.stopPropagation()} > diff --git a/apps/desktop/src/routes/editor/context.ts b/apps/desktop/src/routes/editor/context.ts index 7ab29a7ab5..f4edbd7fa0 100644 --- a/apps/desktop/src/routes/editor/context.ts +++ b/apps/desktop/src/routes/editor/context.ts @@ -207,7 +207,8 @@ export const [EditorContextProvider, useEditorContext] = createContextProvider( let searchTime = time; let _prevDuration = 0; const currentSegmentIndex = segments.findIndex((segment) => { - const duration = segment.end - segment.start; + const duration = + (segment.end - segment.start) / segment.timescale; if (searchTime > duration) { searchTime -= duration; _prevDuration += duration; @@ -220,12 +221,15 @@ export const [EditorContextProvider, useEditorContext] = createContextProvider( if (currentSegmentIndex === -1) return; const segment = segments[currentSegmentIndex]; + const splitPositionInRecording = searchTime * segment.timescale; + segments.splice(currentSegmentIndex + 1, 0, { ...segment, - start: segment.start + searchTime, + start: segment.start + splitPositionInRecording, end: segment.end, }); - segments[currentSegmentIndex].end = segment.start + searchTime; + segments[currentSegmentIndex].end = + segment.start + splitPositionInRecording; }), ); },