public virtual void OnBuildTrackContextMenu(GenericMenu menu, TrackAsset trackAsset, WindowState state)
        {
            var mousePosition = trackMenuContext.mousePosition;
            var candidateTime = TimelineHelpers.GetCandidateTime(state, mousePosition, trackAsset);

            SequencerContextMenu.AddClipMenuCommands(menu, trackAsset, candidateTime);
            SequencerContextMenu.AddMarkerMenuCommands(menu, trackAsset, candidateTime);
        }
        public static void ShowMenu(Vector2?mousePosition, WindowState state)
        {
            var menu = new GenericMenu();

            ContextMenus.markerHeaderMenu.AddToMenu(menu, state);
            var timeline         = state.editSequence.asset;
            var time             = TimelineHelpers.GetCandidateTime(state, mousePosition);
            var enabled          = timeline.markerTrack == null || !timeline.markerTrack.lockedInHierarchy && !state.editSequence.isReadOnly;
            var addMarkerCommand = new Func <Type, IMarker>(type => AddMarkerCommand(type, time, state));

            SequencerContextMenu.AddMarkerMenuCommands(menu, timeline.markerTrack, addMarkerCommand, enabled);
            menu.ShowAsContext();
        }
        public static void ShowMenu(Vector2?mousePosition, WindowState state)
        {
            var menu = new GenericMenu();

            ContextMenus.markerHeaderMenu.AddToMenu(menu, state);
            var timeline    = state.editSequence.asset;
            var markerTypes = TypeUtility.GetMarkerTypes(); // Marker track supports all Markers for now

            if (markerTypes.Any())
            {
                menu.AddSeparator(string.Empty);
                var time             = TimelineHelpers.GetCandidateTime(state, mousePosition);
                var addMarkerCommand = new Func <Type, IMarker>(type => AddMarkerCommand(type, time, state));
                var enabled          = timeline.markerTrack == null || !timeline.markerTrack.lockedInHierarchy;
                SequencerContextMenu.AddMarkerMenuCommands(menu, markerTypes, addMarkerCommand, enabled);
            }

            if (timeline.markerTrack != null)
            {
                SequencerContextMenu.RemoveInvalidMarkersMenuItem(menu, timeline.markerTrack);
            }

            menu.ShowAsContext();
        }