feat(timeline): add context menu handling to TimelineTrackContent component
This commit is contained in:
@ -933,6 +933,7 @@ export function Timeline() {
|
|||||||
track={track}
|
track={track}
|
||||||
zoomLevel={zoomLevel}
|
zoomLevel={zoomLevel}
|
||||||
setContextMenu={setContextMenu}
|
setContextMenu={setContextMenu}
|
||||||
|
contextMenu={contextMenu}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
@ -1117,6 +1118,7 @@ function TimelineTrackContent({
|
|||||||
track,
|
track,
|
||||||
zoomLevel,
|
zoomLevel,
|
||||||
setContextMenu,
|
setContextMenu,
|
||||||
|
contextMenu,
|
||||||
}: {
|
}: {
|
||||||
track: TimelineTrack;
|
track: TimelineTrack;
|
||||||
zoomLevel: number;
|
zoomLevel: number;
|
||||||
@ -1129,6 +1131,13 @@ function TimelineTrackContent({
|
|||||||
y: number;
|
y: number;
|
||||||
} | null
|
} | null
|
||||||
) => void;
|
) => void;
|
||||||
|
contextMenu: {
|
||||||
|
type: "track" | "clip";
|
||||||
|
trackId: string;
|
||||||
|
clipId?: string;
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
} | null;
|
||||||
}) {
|
}) {
|
||||||
const { mediaItems } = useMediaStore();
|
const { mediaItems } = useMediaStore();
|
||||||
const {
|
const {
|
||||||
@ -1715,6 +1724,13 @@ function TimelineTrackContent({
|
|||||||
style={{ width: `${clipWidth}px`, left: `${clipLeft}px` }}
|
style={{ width: `${clipWidth}px`, left: `${clipLeft}px` }}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
|
// Close context menu if it's open
|
||||||
|
if (contextMenu) {
|
||||||
|
setContextMenu(null);
|
||||||
|
return; // Don't handle selection when closing context menu
|
||||||
|
}
|
||||||
|
|
||||||
const isSelected = selectedClips.some(
|
const isSelected = selectedClips.some(
|
||||||
(c) => c.trackId === track.id && c.clipId === clip.id
|
(c) => c.trackId === track.id && c.clipId === clip.id
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user