mirror of
https://github.com/storytold/effectcraft.git
synced 2026-11-11 16:31:42 +00:00
#3395: hidden string parameters stay refused by setValueAtTime and the other key setters
This commit is contained in:
@@ -868,7 +868,11 @@ Property.prototype.property = function () { return null; };
|
||||
return this.__layer.containingComp.layer(idx).__id;
|
||||
}
|
||||
// A string parameter (a LUT or look file, a text field) takes the text, or a File's path (#3395).
|
||||
if (info.type === "string") return __str(v);
|
||||
// A hidden one (Mesh Warp's mesh) stays refused by the key setters too, as by setValue.
|
||||
if (info.type === "string") {
|
||||
if (info.hidden) throw __err("\"" + info.name + "\" can not be set");
|
||||
return __str(v);
|
||||
}
|
||||
if (info.type === "enum") return __num(v) - 1;
|
||||
if (info.type === "bool") return typeof v === "boolean" ? v : __num(v) !== 0;
|
||||
if (info.type === "color") {
|
||||
|
||||
@@ -1952,7 +1952,7 @@ fn setting_comp_width_and_height_leaves_the_layers_where_they_are() {
|
||||
|
||||
/// #3395: setValue on a string effect parameter stores the text, or a File's path, as `prop.set`
|
||||
/// does. Before, every string fell through to the number check ("value must be a number").
|
||||
/// Hidden string parameters (Mesh Warp's Distortion Mesh) stay refused.
|
||||
/// Hidden string parameters (Mesh Warp's Distortion Mesh) stay refused, keys included.
|
||||
#[test]
|
||||
fn set_value_stores_a_string_parameter() {
|
||||
let mut s = session();
|
||||
@@ -1967,12 +1967,14 @@ fn set_value_stores_a_string_parameter() {
|
||||
var fromString = lut.value;
|
||||
lut.setValue(new File("/luts/other.cube"));
|
||||
var mesh = fx.addProperty("Mesh Warp").property("Distortion Mesh");
|
||||
var hidden;
|
||||
try { mesh.setValue("x"); hidden = "no error"; } catch (e) { hidden = e.message; }
|
||||
[lut.propertyValueType === PropertyValueType.CUSTOM_VALUE, fromString, lut.value, hidden]
|
||||
function attempt(f) { try { f(); return "no error"; } catch (e) { return e.message; } }
|
||||
var hidden = attempt(function () { mesh.setValue("x"); });
|
||||
var keyed = attempt(function () { mesh.setValueAtTime(0, "x"); });
|
||||
[lut.propertyValueType === PropertyValueType.CUSTOM_VALUE, fromString, lut.value, hidden, keyed, mesh.numKeys]
|
||||
"#,
|
||||
);
|
||||
assert_eq!(o.result, json!([true, "/luts/look.cube", "/luts/other.cube", "\"Distortion Mesh\" can not be set"]));
|
||||
let refused = "\"Distortion Mesh\" can not be set";
|
||||
assert_eq!(o.result, json!([true, "/luts/look.cube", "/luts/other.cube", refused, refused, 0]));
|
||||
let (_, c) = comp_named(&s, "Str");
|
||||
assert_eq!(layer(c, "s").props.prop("effects/#1/lut").unwrap().value, KV::Str("/luts/other.cube".into()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user