Skip to content

Commit 68ad6bb

Browse files
Merge pull request #1446 from pmartinonales/fix/split-timescale-bug
fix: split action respects segment timescale (speed)
2 parents 2528bde + 73b4b71 commit 68ad6bb

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

apps/desktop/src/routes/editor/Timeline/ClipTrack.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,8 @@ export function ClipTrack(
421421
const fraction = (e.clientX - rect.left) / rect.width;
422422
const seg = segment();
423423

424-
const splitTime = fraction * (seg.end - seg.start);
424+
const splitTime =
425+
(fraction * (seg.end - seg.start)) / seg.timescale;
425426

426427
projectActions.splitClipSegment(prevDuration() + splitTime);
427428
} else {

apps/desktop/src/routes/editor/Timeline/TrackManager.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export function TrackManager(props: {
5757
ref={(el) => {
5858
addButton = el;
5959
}}
60-
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)]"
60+
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)]"
6161
onClick={handleOpenMenu}
6262
onMouseDown={(e) => e.stopPropagation()}
6363
>

apps/desktop/src/routes/editor/context.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,8 @@ export const [EditorContextProvider, useEditorContext] = createContextProvider(
212212
let searchTime = time;
213213
let _prevDuration = 0;
214214
const currentSegmentIndex = segments.findIndex((segment) => {
215-
const duration = segment.end - segment.start;
215+
const duration =
216+
(segment.end - segment.start) / segment.timescale;
216217
if (searchTime > duration) {
217218
searchTime -= duration;
218219
_prevDuration += duration;
@@ -225,12 +226,15 @@ export const [EditorContextProvider, useEditorContext] = createContextProvider(
225226
if (currentSegmentIndex === -1) return;
226227
const segment = segments[currentSegmentIndex];
227228

229+
const splitPositionInRecording = searchTime * segment.timescale;
230+
228231
segments.splice(currentSegmentIndex + 1, 0, {
229232
...segment,
230-
start: segment.start + searchTime,
233+
start: segment.start + splitPositionInRecording,
231234
end: segment.end,
232235
});
233-
segments[currentSegmentIndex].end = segment.start + searchTime;
236+
segments[currentSegmentIndex].end =
237+
segment.start + splitPositionInRecording;
234238
}),
235239
);
236240
},

0 commit comments

Comments
 (0)