The element is edited the normal way (default). If acting on the element as a whole (#GES_EDGE_NONE), this will MOVE the element by MOVING its toplevel. When acting on the start of the element (#GES_EDGE_START), this will only MOVE the element, but not its toplevel parent. This can allow you to move a #GESClip or #GESGroup to a new start time or layer within its container group, without effecting other members of the group. When acting on the end of the element (#GES_EDGE_END), this will END-TRIM the element, leaving its toplevel unchanged.
The element is edited in ripple mode: moving itself as well as later elements, keeping their relative times. This edits the element the same as #GES_EDIT_MODE_NORMAL. In addition, if acting on the element as a whole, or the start of the element, any toplevel element in the same timeline (including different layers) whose start time is later than the current start time of the MOVED element will also be MOVED by the same shift as the edited element. If acting on the end of the element, any toplevel element whose start time is later than the current end time of the edited element will also be MOVED by the same shift as the change in the end of the edited element. These additional elements will also be shifted by the same shift in layers as the edited element.
The element is edited in roll mode: swapping its content for its neighbour's, or vis versa, in the timeline output. This edits the element the same as #GES_EDIT_MODE_TRIM. In addition, any neighbours are also TRIMMED at their opposite edge to the same timeline position. When acting on the start of the element, a neighbour is any earlier element in the timeline whose end time matches the current start time of the edited element. When acting on the end of the element, a neighbour is any later element in the timeline whose start time matches the current start time of the edited element. In addition, a neighbour have a #GESSource at its end/start edge that shares a track with a #GESSource at the start/end edge of the edited element. Basically, a neighbour is an element that can be extended, or cut, to have its content replace, or be replaced by, the content of the edited element. Acting on the element as a whole (#GES_EDGE_NONE) is not defined. The element can not shift layers under this mode.
The element is edited in slide mode (not yet implemented): moving the element replacing or consuming content on each end. When acting on the element as a whole, this will MOVE the element, and TRIM any neighbours on either side. A neighbour is defined in the same way as in #GES_EDIT_MODE_ROLL, but they may be on either side of the edited elements. Elements at the end with be START-TRIMMED to the new end position of the edited element. Elements at the start will be END-TRIMMED to the new start position of the edited element. Acting on the start or end of the element (#GES_EDGE_START and #GES_EDGE_END) is not defined. The element can not shift layers under this mode.
The element is edited in trim mode. When acting on the start of the element, this will START-TRIM it. When acting on the end of the element, this will END-TRIM it. Acting on the element as a whole (#GES_EDGE_NONE) is not defined.
The element is edited the normal way (default). If acting on the element as a whole (#GES_EDGE_NONE), this will MOVE the element by MOVING its toplevel. When acting on the start of the element (#GES_EDGE_START), this will only MOVE the element, but not its toplevel parent. This can allow you to move a #GESClip or #GESGroup to a new start time or layer within its container group, without effecting other members of the group. When acting on the end of the element (#GES_EDGE_END), this will END-TRIM the element, leaving its toplevel unchanged.
The element is edited in ripple mode: moving itself as well as later elements, keeping their relative times. This edits the element the same as #GES_EDIT_MODE_NORMAL. In addition, if acting on the element as a whole, or the start of the element, any toplevel element in the same timeline (including different layers) whose start time is later than the current start time of the MOVED element will also be MOVED by the same shift as the edited element. If acting on the end of the element, any toplevel element whose start time is later than the current end time of the edited element will also be MOVED by the same shift as the change in the end of the edited element. These additional elements will also be shifted by the same shift in layers as the edited element.
The element is edited in roll mode: swapping its content for its neighbour's, or vis versa, in the timeline output. This edits the element the same as #GES_EDIT_MODE_TRIM. In addition, any neighbours are also TRIMMED at their opposite edge to the same timeline position. When acting on the start of the element, a neighbour is any earlier element in the timeline whose end time matches the current start time of the edited element. When acting on the end of the element, a neighbour is any later element in the timeline whose start time matches the current start time of the edited element. In addition, a neighbour have a #GESSource at its end/start edge that shares a track with a #GESSource at the start/end edge of the edited element. Basically, a neighbour is an element that can be extended, or cut, to have its content replace, or be replaced by, the content of the edited element. Acting on the element as a whole (#GES_EDGE_NONE) is not defined. The element can not shift layers under this mode.
The element is edited in slide mode (not yet implemented): moving the element replacing or consuming content on each end. When acting on the element as a whole, this will MOVE the element, and TRIM any neighbours on either side. A neighbour is defined in the same way as in #GES_EDIT_MODE_ROLL, but they may be on either side of the edited elements. Elements at the end with be START-TRIMMED to the new end position of the edited element. Elements at the start will be END-TRIMMED to the new start position of the edited element. Acting on the start or end of the element (#GES_EDGE_START and #GES_EDGE_END) is not defined. The element can not shift layers under this mode.
The element is edited in trim mode. When acting on the start of the element, this will START-TRIM it. When acting on the end of the element, this will END-TRIM it. Acting on the element as a whole (#GES_EDGE_NONE) is not defined.
When a single timeline element is edited within its timeline at some position, using ges_timeline_element_edit(), depending on the edit mode, its #GESTimelineElement:start, #GESTimelineElement:duration or #GESTimelineElement:in-point will be adjusted accordingly. In addition, any clips may change #GESClip:layer.
Each edit can be broken down into a combination of three basic edits:
In particular, when editing a #GESClip:
When editing a #GESGroup:
When editing a #GESTrackElement, if it has a #GESClip parent, this will be edited instead. Otherwise it is edited in the same way as a #GESClip.
The layer priority of a #GESGroup is the lowest layer priority of any #GESClip underneath it. When a group is edited to a new layer priority, it will shift all clips underneath it by the same amount, such that their relative layers stay the same.
If the #GESTimeline has a #GESTimeline:snapping-distance, then snapping may occur for some of the edges of the main edited element:
These edges may snap with either the start or end edge of any other #GESSource in the timeline that is not also being moved by the element, including those in different layers, if they are within the #GESTimeline:snapping-distance. During an edit, only up to one snap can occur. This will shift the edit position such that the snapped edges will touch once the edit has completed.
Note that snapping can cause an edit to fail where it would have otherwise succeeded because it may push the edit position such that the edit would result in an unsupported timeline configuration. Similarly, snapping can cause an edit to succeed where it would have otherwise failed.
For example, in #GES_EDIT_MODE_RIPPLE acting on #GES_EDGE_NONE, the main element is the MOVED toplevel of the edited element. Any source under the main MOVED toplevel may have its start or end edge snapped. Note, these sources cannot snap with each other. The edit may also push other elements, but any sources under these elements cannot snap, nor can they be snapped with. If a snap does occur, the MOVE of the toplevel and all other elements pushed by the ripple will be shifted by the same amount such that the snapped edges will touch.
You can also find more explanation about the behaviour of those modes at: trim, ripple and roll and clip management.