Timeline: parent and matte selected layers together (#1260)

On a selected layer's row, the Parent menu and pick whip and the Track
Matte menu now set every selected layer's parent or matte, as moving a
selected layer's bar moves them all; on an unselected row they set that
layer's alone. Each is one undo step. A selected layer chosen as the
parent or the matte is left out of the layers it links, and parenting
that would make a loop is refused as a whole.

A new matte layer keeps each layer's mode (layer.setTrackMatte with
kind: preserve); a mode and No Track Matte apply to all of them.

The Track Matte column gets a pick whip, like the parent's
(timeline.layer.<id>.trackMattePickWhip, with a translated tooltip):
dropped on an audio-video layer's row, it makes that layer the matte.
The layers a parent or matte pick whip links are taken when its drag
starts.

Tests (ui_batch_links): the Parent menu and pick whip, and the Track
Matte menu, mode, No Track Matte and pick whip, with real clicks and
drags: selected layers change together and unselected ones don't, modes
are kept, one undo puts links, compensated transforms and the matte's
visibility back, and a refused cycle changes nothing. Both fail on main.
This commit is contained in:
tylerjenningsw
2026-10-13 10:52:40 -04:00
parent f51b4b7e1b
commit 4ce9569454
4 changed files with 228 additions and 21 deletions
+7
View File
@@ -610,6 +610,13 @@ Extension points and the bundled extensions: [plugins.md](plugins.md).
Dragged onto another property's name or value, in the Timeline or Effect Controls
(`effectControls.prop.<uid>.value[.<d>]`), it runs `prop.pickWhip`: the reference replaces the
property's expression, or is added as one, and the expression is enabled.
* Parent and Track Matte for several layers: on a selected layer's row, the Timeline's Parent
menu and pick whip (`timeline.layer.<id>.parent`, `timeline.layer.<id>.pickWhip`) and its Track
Matte menu and pick whip (`timeline.layer.<id>.trackMatte`,
`timeline.layer.<id>.trackMattePickWhip`) set every selected layer's (on an unselected row,
that layer's), in one undo step. Directly: `layer.setParent {layers, parent}` and
`layer.setTrackMatte {layers, matte, kind}`, where `kind: "preserve"` keeps each layer's
own matte mode.
* A property's menu (right-click its name; entries `timeline.prop.<uid>.menu.<entry>`): Reset
(`prop.reset`: no expression, and the property's default value, an effect parameter's or a
Transform property's; an animated property keeps its keyframes and gets the default as a