mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-27 19:47:12 -06:00
fix(script): keep pending TextDocument baseline reads in sync (#549)
This commit is contained in:
@@ -480,9 +480,16 @@ TextDocument.prototype = {
|
||||
get smallCaps() { return this.__style("smallCaps", false); },
|
||||
set smallCaps(v) { this.__set("smallCaps", !!v); },
|
||||
get superscript() { return this.__style("baseline", "normal") === "superscript"; },
|
||||
set superscript(v) { this.__set("superscript", !!v); },
|
||||
set superscript(v) {
|
||||
// The pending document reads the same canonical baseline that setValue will apply.
|
||||
if (v) this.__set("baseline", "superscript");
|
||||
else if (this.superscript) this.__set("baseline", "normal");
|
||||
},
|
||||
get subscript() { return this.__style("baseline", "normal") === "subscript"; },
|
||||
set subscript(v) { this.__set("subscript", !!v); },
|
||||
set subscript(v) {
|
||||
if (v) this.__set("baseline", "subscript");
|
||||
else if (this.subscript) this.__set("baseline", "normal");
|
||||
},
|
||||
get tsume() { return this.__style("tsume", 0); },
|
||||
set tsume(v) { this.__set("tsume", __num(v)); },
|
||||
get boxText() { return !!(this.__base && this.__base.box_size); },
|
||||
|
||||
@@ -524,3 +524,43 @@ fn comp_preserves_nested_frame_rate_and_resolution() {
|
||||
let (_, c) = comp_named(&s, "Nested");
|
||||
assert!(c.preserve_frame_rate && c.preserve_resolution);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn text_document_baseline_flags_reflect_pending_edits_and_applied_value() {
|
||||
let mut s = session();
|
||||
let o = ok(
|
||||
&mut s,
|
||||
r#"
|
||||
var comp = app.project.items.addComp("Baseline", 64, 64, 1, 1, 24);
|
||||
var src = comp.layers.addText("AB").text.sourceText;
|
||||
var doc = src.value;
|
||||
doc.superscript = true;
|
||||
var pendingSuper = [doc.superscript, doc.subscript];
|
||||
doc.text = doc.superscript ? "super" : "normal";
|
||||
src.setValue(doc);
|
||||
var appliedSuper = [src.value.text, src.value.superscript, src.value.subscript];
|
||||
doc = src.value;
|
||||
doc.subscript = true;
|
||||
var pendingSub = [doc.superscript, doc.subscript];
|
||||
src.setValue(doc);
|
||||
var appliedSub = [src.value.superscript, src.value.subscript];
|
||||
doc = src.value;
|
||||
doc.subscript = false;
|
||||
var cleared = [doc.superscript, doc.subscript];
|
||||
src.setValue(doc);
|
||||
var appliedClear = [src.value.superscript, src.value.subscript];
|
||||
doc = src.value;
|
||||
doc.superscript = true;
|
||||
doc.superscript = false;
|
||||
var repeatClear = [doc.superscript, doc.subscript];
|
||||
[pendingSuper, appliedSuper, pendingSub, appliedSub, cleared, appliedClear, repeatClear];
|
||||
"#,
|
||||
);
|
||||
assert_eq!(
|
||||
o.result,
|
||||
json!([
|
||||
[true, false], ["super", true, false], [false, true], [false, true],
|
||||
[false, false], [false, false], [false, false]
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user