feat: select clip when being dragged, even if it wasn't selected
This commit is contained in:
@ -58,6 +58,19 @@ export function TimelineTrackContent({
|
|||||||
const handleMouseMove = (e: MouseEvent) => {
|
const handleMouseMove = (e: MouseEvent) => {
|
||||||
if (!timelineRef.current) return;
|
if (!timelineRef.current) return;
|
||||||
|
|
||||||
|
// On first mouse move during drag, ensure the clip is selected
|
||||||
|
if (dragState.clipId && dragState.trackId) {
|
||||||
|
const isSelected = selectedClips.some(
|
||||||
|
(c) =>
|
||||||
|
c.trackId === dragState.trackId && c.clipId === dragState.clipId
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!isSelected) {
|
||||||
|
// Select this clip (replacing other selections) since we're dragging it
|
||||||
|
selectClip(dragState.trackId, dragState.clipId, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const timelineRect = timelineRef.current.getBoundingClientRect();
|
const timelineRect = timelineRef.current.getBoundingClientRect();
|
||||||
const mouseX = e.clientX - timelineRect.left;
|
const mouseX = e.clientX - timelineRect.left;
|
||||||
const mouseTime = Math.max(0, mouseX / (50 * zoomLevel));
|
const mouseTime = Math.max(0, mouseX / (50 * zoomLevel));
|
||||||
@ -139,6 +152,7 @@ export function TimelineTrackContent({
|
|||||||
|
|
||||||
const handleClipMouseDown = (e: React.MouseEvent, clip: TypeTimelineClip) => {
|
const handleClipMouseDown = (e: React.MouseEvent, clip: TypeTimelineClip) => {
|
||||||
setMouseDownLocation({ x: e.clientX, y: e.clientY });
|
setMouseDownLocation({ x: e.clientX, y: e.clientY });
|
||||||
|
|
||||||
// Handle multi-selection only in mousedown
|
// Handle multi-selection only in mousedown
|
||||||
if (e.metaKey || e.ctrlKey || e.shiftKey) {
|
if (e.metaKey || e.ctrlKey || e.shiftKey) {
|
||||||
selectClip(track.id, clip.id, true);
|
selectClip(track.id, clip.id, true);
|
||||||
|
Reference in New Issue
Block a user