private static bool _canPaste(Event sourceEvent, Event destEvent, TPasteLocation location, ClipboardOperation operation) { if (sourceEvent.Engine != destEvent.Engine) return false; if (location == TPasteLocation.Under) { if (destEvent.EventType == TEventType.StillImage) return false; if ((destEvent.EventType == TEventType.Movie || destEvent.EventType == TEventType.Live) && !(sourceEvent.EventType == TEventType.StillImage || sourceEvent.EventType == TEventType.AnimationFlash)) return false; if (destEvent.EventType == TEventType.Rundown && (sourceEvent.EventType == TEventType.StillImage || sourceEvent.EventType == TEventType.AnimationFlash || destEvent.SubEvents.Count > 0)) return false; if (destEvent.EventType == TEventType.Container && sourceEvent.EventType != TEventType.Rundown) return false; } if (location == TPasteLocation.After || location == TPasteLocation.Before) { if (!(sourceEvent.EventType == TEventType.Rundown || sourceEvent.EventType == TEventType.Movie || sourceEvent.EventType == TEventType.Live) || !(destEvent.EventType == TEventType.Rundown || destEvent.EventType == TEventType.Movie || destEvent.EventType == TEventType.Live) ) return false; } if (destEvent.IsContainedIn(sourceEvent)) { if (sourceEvent == destEvent && location != TPasteLocation.Under && operation == ClipboardOperation.Copy) return true; return false; } return true; }