diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-07 16:01:59 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-13 05:01:51 +0200 |
| commit | 0d0d7375635733435922a697d91601206cc38b68 (patch) | |
| tree | 272d557bb877957ec235ae509c2aedd499a39a64 /apps/web/src/components/editor | |
| parent | f06a930fc1920b7eb396202d429c237ff30c6b5e (diff) | |
| download | opencut-0d0d7375635733435922a697d91601206cc38b68.tar.gz | |
fix: one more
Diffstat (limited to 'apps/web/src/components/editor')
| -rw-r--r-- | apps/web/src/components/editor/panels/timeline/drop-target.ts | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/apps/web/src/components/editor/panels/timeline/drop-target.ts b/apps/web/src/components/editor/panels/timeline/drop-target.ts index f65170fe..ef6cbd90 100644 --- a/apps/web/src/components/editor/panels/timeline/drop-target.ts +++ b/apps/web/src/components/editor/panels/timeline/drop-target.ts @@ -3,6 +3,7 @@ import type { ComputeDropTargetParams, DropTarget } from "@/lib/timeline"; import { resolveTrackPlacement } from "@/lib/timeline/placement"; import { TIMELINE_TRACK_GAP_PX } from "./layout"; import { getTrackHeight } from "./track-layout"; +import { TICKS_PER_SECOND } from "@/lib/wasm"; function findElementAtPosition({ mouseX, @@ -19,7 +20,9 @@ function findElementAtPosition({ pixelsPerSecond: number; zoomLevel: number; }): { elementId: string; trackId: string } | null { - const time = mouseX / (pixelsPerSecond * zoomLevel); + const time = Math.round( + (mouseX / (pixelsPerSecond * zoomLevel)) * TICKS_PER_SECOND, + ); const track = tracks[trackIndex]; if (!track || !("elements" in track)) return null; @@ -112,7 +115,9 @@ export function computeDropTarget({ ? startTimeOverride : isExternalDrop ? playheadTime - : Math.max(0, mouseX / (pixelsPerSecond * zoomLevel)); + : Math.round( + Math.max(0, mouseX / (pixelsPerSecond * zoomLevel)) * TICKS_PER_SECOND, + ); if (orderedTracks.length === 0) { const placementResult = resolveTrackPlacement({ |
