Add context menu for the timeline tracks and change signature for media context menu
This commit is contained in:
@@ -229,8 +229,9 @@ namespace FlaxEditor.GUI.Timeline
|
||||
/// Called when showing timeline context menu to the user. Can be used to add custom buttons.
|
||||
/// </summary>
|
||||
/// <param name="menu">The menu.</param>
|
||||
/// <param name="time">The time (in seconds) at which context menu is shown (user clicked on a timeline).</param>
|
||||
/// <param name="controlUnderMouse">The found control under the mouse cursor.</param>
|
||||
public virtual void OnTimelineShowContextMenu(ContextMenu.ContextMenu menu, Control controlUnderMouse)
|
||||
public virtual void OnTimelineContextMenu(ContextMenu.ContextMenu menu, float time, Control controlUnderMouse)
|
||||
{
|
||||
if (CanDelete && Track.Media.Count > Track.MinMediaCount)
|
||||
menu.AddButton("Delete media", Delete);
|
||||
|
||||
@@ -1901,6 +1901,9 @@ namespace FlaxEditor.GUI.Timeline
|
||||
if (!ContainsFocus)
|
||||
Focus();
|
||||
|
||||
var timelinePos = MediaPanel.PointFromParent(this, location);
|
||||
var time = (timelinePos.X - StartOffset) / (UnitsPerSecond * Zoom);
|
||||
|
||||
var controlUnderMouse = GetChildAtRecursive(location);
|
||||
var mediaUnderMouse = controlUnderMouse;
|
||||
while (mediaUnderMouse != null && !(mediaUnderMouse is Media))
|
||||
@@ -1911,12 +1914,23 @@ namespace FlaxEditor.GUI.Timeline
|
||||
var menu = new ContextMenu.ContextMenu();
|
||||
if (mediaUnderMouse is Media media)
|
||||
{
|
||||
media.OnTimelineShowContextMenu(menu, controlUnderMouse);
|
||||
media.OnTimelineContextMenu(menu, time, controlUnderMouse);
|
||||
if (media.PropertiesEditObject != null)
|
||||
{
|
||||
menu.AddButton("Edit media", () => ShowEditPopup(media.PropertiesEditObject, location, media.Track));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var track in _tracks)
|
||||
{
|
||||
if (Mathf.IsInRange(timelinePos.Y, track.Top, track.Bottom))
|
||||
{
|
||||
track.OnTimelineContextMenu(menu, time);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (PropertiesEditObject != null)
|
||||
{
|
||||
menu.AddButton("Edit timeline", () => ShowEditPopup(PropertiesEditObject, location, this));
|
||||
|
||||
@@ -1028,6 +1028,15 @@ namespace FlaxEditor.GUI.Timeline
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when showing timeline context menu to the user. Can be used to add custom buttons.
|
||||
/// </summary>
|
||||
/// <param name="menu">The menu.</param>
|
||||
/// <param name="time">The time (in seconds) at which context menu is shown (user clicked on a timeline).</param>
|
||||
public virtual void OnTimelineContextMenu(ContextMenu.ContextMenu menu, float time)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when context menu is being prepared to show. Can be used to add custom options.
|
||||
/// </summary>
|
||||
|
||||
@@ -324,12 +324,12 @@ namespace FlaxEditor.GUI.Timeline.Tracks
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void OnTimelineShowContextMenu(ContextMenu.ContextMenu menu, Control controlUnderMouse)
|
||||
public override void OnTimelineContextMenu(ContextMenu.ContextMenu menu, float time, Control controlUnderMouse)
|
||||
{
|
||||
if (((CameraCutTrack)Track).Camera)
|
||||
menu.AddButton("Refresh thumbnails", () => UpdateThumbnails());
|
||||
|
||||
base.OnTimelineShowContextMenu(menu, controlUnderMouse);
|
||||
base.OnTimelineContextMenu(menu, time, controlUnderMouse);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -101,9 +101,9 @@ namespace FlaxEditor.GUI.Timeline.Tracks
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void OnTimelineShowContextMenu(ContextMenu.ContextMenu menu, Control controlUnderMouse)
|
||||
public override void OnTimelineContextMenu(ContextMenu.ContextMenu menu, float time, Control controlUnderMouse)
|
||||
{
|
||||
base.OnTimelineShowContextMenu(menu, controlUnderMouse);
|
||||
base.OnTimelineContextMenu(menu, time, controlUnderMouse);
|
||||
|
||||
if (controlUnderMouse is GradientEditor.StopControl stop)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user