Timeline: every property has a pick whip in the Parent & Link column (#363)

What: each property row that can take an expression (it has a stopwatch) now
has a property pick whip in the Parent & Link column, as in After Effects
CC 2018 and later (automation id `timeline.prop.<uid>.propertyPickWhip`).
Dragged onto another property's name or one of its values, it runs
`prop.pickWhip`: the reference is added as the property's expression, or
replaces the one it has, and the expression is enabled. A drop on one value
picks that dimension (`position[1]`).

The parent, expression and property pick whips share one widget and one
drop path (rubber band, autoscroll, dimension pick); only the expression
pick whip inserts at the cursor of an expression being edited.

Pick whips (expression and property) now also drop on properties in
Effect Controls: its property rows register as targets while a pick whip
is dragged, with their per-dimension value fields.

Why: the last part of #363. Adobe's docs say the Property Link pick whip
adds the expression without enabling expressions first, and a pick whip
outside an edit replaces the whole expression text. No modifier keys for
the property pick whip are documented, so none are implemented.

Tests: `the_property_pick_whip_links_a_property_to_another` (ui_inline_edit)
drops it on a property's name, on one of Position's values, on a property
with a disabled expression (replaced and enabled), on an Effect Controls
slider and one value of a point, and on itself (no change). It fails
before the change; with Effect Controls' targets removed it fails at the
slider. Looked at the result with the headless snapshot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bflatastic
2026-10-10 00:28:22 +07:00
co-authored by Claude Opus 5.5
parent 4b7bd135ec
commit 67b9b20a07
6 changed files with 202 additions and 54 deletions
+5
View File
@@ -495,6 +495,11 @@ Extension points and the bundled extensions: [plugins.md](plugins.md).
* `prop.pickWhip {layer, prop, target: {layer, prop, dimension?}}` links a property as its
expression pick whip does; `dimension` picks one of the target's values (`position[0]`), as a
drop on that value field does.
* Every property row has a property pick whip in the Parent & Link column
(`timeline.prop.<uid>.propertyPickWhip`; the expression row's is `timeline.prop.<uid>.pickWhip`).
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.
* A property's menu (right-click its name; entries `timeline.prop.<uid>.menu.<entry>`): Reset
(`prop.reset`: no keyframes or expression, and the property's default value, an effect
parameter's or a Transform property's), Edit Value… (`prop.set {layer, prop}` without `value`