mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
fix: ensure clicking context menu item doesn't move timeline playhead
This commit is contained in:
@@ -746,11 +746,14 @@ export function Timeline() {
|
|||||||
</ContextMenuTrigger>
|
</ContextMenuTrigger>
|
||||||
<ContextMenuContent className="z-[200]">
|
<ContextMenuContent className="z-[200]">
|
||||||
<ContextMenuItem
|
<ContextMenuItem
|
||||||
onClick={() => toggleTrackMute(track.id)}
|
onClick={(e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
toggleTrackMute(track.id);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
{track.muted ? "Unmute Track" : "Mute Track"}
|
{track.muted ? "Unmute Track" : "Mute Track"}
|
||||||
</ContextMenuItem>
|
</ContextMenuItem>
|
||||||
<ContextMenuItem>
|
<ContextMenuItem onClick={(e) => e.stopPropagation()}>
|
||||||
Track settings (soon)
|
Track settings (soon)
|
||||||
</ContextMenuItem>
|
</ContextMenuItem>
|
||||||
</ContextMenuContent>
|
</ContextMenuContent>
|
||||||
|
|||||||
@@ -102,7 +102,8 @@ export function TimelineElement({
|
|||||||
// Element should always be positioned at startTime - trimStart only affects content, not position
|
// Element should always be positioned at startTime - trimStart only affects content, not position
|
||||||
const elementLeft = elementStartTime * 50 * zoomLevel;
|
const elementLeft = elementStartTime * 50 * zoomLevel;
|
||||||
|
|
||||||
const handleElementSplitContext = () => {
|
const handleElementSplitContext = (e: React.MouseEvent) => {
|
||||||
|
e.stopPropagation();
|
||||||
const effectiveStart = element.startTime;
|
const effectiveStart = element.startTime;
|
||||||
const effectiveEnd =
|
const effectiveEnd =
|
||||||
element.startTime +
|
element.startTime +
|
||||||
@@ -118,7 +119,8 @@ export function TimelineElement({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleElementDuplicateContext = () => {
|
const handleElementDuplicateContext = (e: React.MouseEvent) => {
|
||||||
|
e.stopPropagation();
|
||||||
const { id, ...elementWithoutId } = element;
|
const { id, ...elementWithoutId } = element;
|
||||||
addElementToTrack(track.id, {
|
addElementToTrack(track.id, {
|
||||||
...elementWithoutId,
|
...elementWithoutId,
|
||||||
@@ -130,7 +132,8 @@ export function TimelineElement({
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleElementDeleteContext = () => {
|
const handleElementDeleteContext = (e: React.MouseEvent) => {
|
||||||
|
e.stopPropagation();
|
||||||
if (rippleEditingEnabled) {
|
if (rippleEditingEnabled) {
|
||||||
removeElementFromTrackWithRipple(track.id, element.id);
|
removeElementFromTrackWithRipple(track.id, element.id);
|
||||||
} else {
|
} else {
|
||||||
@@ -138,7 +141,8 @@ export function TimelineElement({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleReplaceClip = () => {
|
const handleReplaceClip = (e: React.MouseEvent) => {
|
||||||
|
e.stopPropagation();
|
||||||
if (element.type !== "media") {
|
if (element.type !== "media") {
|
||||||
toast.error("Replace is only available for media clips");
|
toast.error("Replace is only available for media clips");
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user