summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaniel-inderos <daniel.inderos@icloud.com>2025-07-21 11:23:46 -0600
committerdaniel-inderos <daniel.inderos@icloud.com>2025-07-21 11:23:46 -0600
commitd27f05be92bc67a1db0e0fb1ab6031b7881c4f8c (patch)
tree7d8ac865d6d27cd4acb5729c8294701f2c7ec169
parent3446fdde87795693d01c1e7a010a92d4851c0ed7 (diff)
downloadopencut-d27f05be92bc67a1db0e0fb1ab6031b7881c4f8c.tar.gz
Fix timeline scrolling
-rw-r--r--apps/web/src/components/editor/timeline.tsx18
-rw-r--r--apps/web/src/components/ui/scroll-area.tsx1
-rw-r--r--apps/web/src/hooks/use-timeline-zoom.ts6
3 files changed, 22 insertions, 3 deletions
diff --git a/apps/web/src/components/editor/timeline.tsx b/apps/web/src/components/editor/timeline.tsx
index 6e8c453c..0b5bcf57 100644
--- a/apps/web/src/components/editor/timeline.tsx
+++ b/apps/web/src/components/editor/timeline.tsx
@@ -878,7 +878,13 @@ export function Timeline() {
{/* Timeline Ruler */}
<div
className="flex-1 relative overflow-hidden h-4"
- onWheel={handleWheel}
+ onWheel={(e) => {
+ // Check if this is horizontal scrolling - if so, don't handle it here
+ if (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) {
+ return; // Let ScrollArea handle horizontal scrolling
+ }
+ handleWheel(e);
+ }}
onMouseDown={handleSelectionMouseDown}
onClick={handleTimelineContentClick}
data-ruler-area
@@ -999,7 +1005,13 @@ export function Timeline() {
{/* Timeline Tracks Content */}
<div
className="flex-1 relative overflow-hidden"
- onWheel={handleWheel}
+ onWheel={(e) => {
+ // Check if this is horizontal scrolling - if so, don't handle it here
+ if (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) {
+ return; // Let ScrollArea handle horizontal scrolling
+ }
+ handleWheel(e);
+ }}
onMouseDown={(e) => {
handleTimelineMouseDown(e);
handleSelectionMouseDown(e);
@@ -1013,7 +1025,7 @@ export function Timeline() {
containerRef={tracksContainerRef}
isActive={selectionBox?.isActive || false}
/>
- <ScrollArea className="w-full h-full" ref={tracksScrollRef}>
+ <ScrollArea className="w-full h-full" ref={tracksScrollRef} type="scroll">
<div
className="relative flex-1"
style={{
diff --git a/apps/web/src/components/ui/scroll-area.tsx b/apps/web/src/components/ui/scroll-area.tsx
index 6b7c3c53..d985443f 100644
--- a/apps/web/src/components/ui/scroll-area.tsx
+++ b/apps/web/src/components/ui/scroll-area.tsx
@@ -18,6 +18,7 @@ const ScrollArea = React.forwardRef<
{children}
</ScrollAreaPrimitive.Viewport>
<ScrollBar />
+ <ScrollBar orientation="horizontal" />
<ScrollAreaPrimitive.Corner />
</ScrollAreaPrimitive.Root>
));
diff --git a/apps/web/src/hooks/use-timeline-zoom.ts b/apps/web/src/hooks/use-timeline-zoom.ts
index ce32c9f0..4f5e0af0 100644
--- a/apps/web/src/hooks/use-timeline-zoom.ts
+++ b/apps/web/src/hooks/use-timeline-zoom.ts
@@ -24,6 +24,12 @@ export function useTimelineZoom({
const delta = e.deltaY > 0 ? -0.15 : 0.15;
setZoomLevel((prev) => Math.max(0.1, Math.min(10, prev + delta)));
}
+ // For horizontal scrolling (when shift is held or horizontal wheel movement),
+ // let the event bubble up to allow ScrollArea to handle it
+ else if (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) {
+ // Don't prevent default - let ScrollArea handle horizontal scrolling
+ return;
+ }
// Otherwise, allow normal scrolling
}, []);