diff --git a/packages/webui/src/client/styles/rundownView.scss b/packages/webui/src/client/styles/rundownView.scss index 5fac7716f9..d1f2f6840d 100644 --- a/packages/webui/src/client/styles/rundownView.scss +++ b/packages/webui/src/client/styles/rundownView.scss @@ -1568,7 +1568,7 @@ svg.icon { bottom: 0; right: 1px; z-index: 10; - pointer-events: all; + pointer-events: none; background-image: repeating-linear-gradient( 45deg, var(--invalid-reason-color-transparent) 0%, diff --git a/packages/webui/src/client/ui/RundownView.tsx b/packages/webui/src/client/ui/RundownView.tsx index 3ed1ecc8f7..80478363a5 100644 --- a/packages/webui/src/client/ui/RundownView.tsx +++ b/packages/webui/src/client/ui/RundownView.tsx @@ -1378,6 +1378,7 @@ const RundownViewContent = translateWithTracker {(selectionContext) => { const isPropertiesPanelOpen = selectionContext.listSelectedElements().length > 0 + return (
(undefined) const rundownId = piece ? piece.startRundownId : part ? part.rundownId : segment?.rundownId + const lastValidPiece = useRef(undefined) + useEffect(() => { clearPendingChange() // element id changed so any pending change is for an old element const computation = Tracker.nonreactive(() => Tracker.autorun(() => { - const piece = Pieces.findOne(selectedElement?.elementId) + let piece = Pieces.findOne(selectedElement?.elementId) + + if (!piece && lastValidPiece.current && lastValidPiece.current._id === selectedElement?.elementId) { + piece = lastValidPiece.current + } else if (piece) { + lastValidPiece.current = piece + } + const part = UIParts.findOne({ _id: piece ? piece.startPartId : selectedElement?.elementId }) const segment = Segments.findOne({ _id: part ? part.segmentId : selectedElement?.elementId }) diff --git a/packages/webui/src/client/ui/SegmentTimeline/SegmentContextMenu.tsx b/packages/webui/src/client/ui/SegmentTimeline/SegmentContextMenu.tsx index b3966b5946..267a0d8fc7 100644 --- a/packages/webui/src/client/ui/SegmentTimeline/SegmentContextMenu.tsx +++ b/packages/webui/src/client/ui/SegmentTimeline/SegmentContextMenu.tsx @@ -139,7 +139,7 @@ export const SegmentContextMenu = withTranslation()( )} )} - {part && !part.instance.part.invalid && timecode !== null && ( + {part && timecode !== null && ( <> this.props.onSetNext(part.instance.part, e)} diff --git a/packages/webui/src/client/ui/SegmentTimeline/SourceLayerItem.tsx b/packages/webui/src/client/ui/SegmentTimeline/SourceLayerItem.tsx index 56cc78ce37..e16501b4c0 100644 --- a/packages/webui/src/client/ui/SegmentTimeline/SourceLayerItem.tsx +++ b/packages/webui/src/client/ui/SegmentTimeline/SourceLayerItem.tsx @@ -176,15 +176,14 @@ export const SourceLayerItem = (props: Readonly): JSX.Ele innerPiece.userEditProperties?.globalProperties || innerPiece.userEditProperties?.operations?.length ) + if (!hasEditableContent) return const pieceId = innerPiece._id - if (!selectElementContext.isSelected(pieceId)) { - RundownViewEventBus.emit(RundownViewEvents.CLOSE_NOTIFICATIONS) - selectElementContext.clearAndSetSelection({ type: 'piece', elementId: pieceId }) - } else { - selectElementContext.clearSelections() - } + + RundownViewEventBus.emit(RundownViewEvents.CLOSE_NOTIFICATIONS) + selectElementContext.clearAndSetSelection({ type: 'piece', elementId: pieceId }) + // Until a proper data structure, the only reference is a part. // const partId = this.props.part.instance.part._id // if (!selectElementContext.isSelected(partId)) {