Merge pull request #561 from Ni-zav/fix/545-expression-baseline-getters-s20261010T084400Z-a6e9

This commit is contained in:
Claude committed 2026-10-10 12:49:11 +00:00
commit 2e92dcad5f
2 files changed
+37 -2

No files matched your search

+4 -2
View File
@@ -932,8 +932,10 @@ __TextStyle.prototype = {
setVerticalScaling: __styleSetter('vScale'),
setTsume: __styleSetter('tsume'),
setBaselineOption: __styleSetter('baseline', function (v) { return String(v).toLowerCase().replace('_baseline', ''); }),
setSuperscript: __styleSetter('superscript', Boolean),
setSubscript: __styleSetter('subscript', Boolean),
// Canonical baseline operations also make the returned TextStyle's getters reflect
// the pending edit, rather than waiting for the host to apply a superscript flag.
setSuperscript: __styleSetter('baseline', function (v) { return v ? 'superscript' : 'normal'; }),
setSubscript: __styleSetter('baseline', function (v) { return v ? 'subscript' : 'normal'; }),
setKerningType: __styleSetter('kerning', function (v) { v = String(v).toLowerCase(); return v === 'manual' ? 0 : v; }),
setKerning: __styleSetter('kerning', Number),
setLigature: __styleSetter('ligatures', Boolean),
+33
View File
@@ -1160,3 +1160,36 @@ fn thousands_of_host_reads_on_one_thread_keep_working() {
assert_eq!(f.num("function a() { return effect(1)(1); } function b() { return a(); } b() + 1", t), 43.0, "evaluation {i}");
}
}
#[test]
fn pending_text_style_baseline_setters_are_visible_to_expression_getters() {
let x = fx();
assert_eq!(
x.num("thisComp.layer('Title').text.sourceText.style.setSuperscript(true).isSuperscript ? 1 : 0", 0.0),
1.0
);
assert_eq!(
x.num("thisComp.layer('Title').text.sourceText.style.setSubscript(true).isSubscript ? 1 : 0", 0.0),
1.0
);
assert_eq!(
x.num("thisComp.layer('Title').text.sourceText.style.setSuperscript(true).setSubscript(true).isSuperscript ? 1 : 0", 0.0),
0.0
);
assert_eq!(
x.num("thisComp.layer('Title').text.sourceText.style.setSuperscript(true).setSubscript(true).isSubscript ? 1 : 0", 0.0),
1.0
);
assert_eq!(
x.num("thisComp.layer('Title').text.sourceText.style.setSubscript(true).setSubscript(false).isSubscript ? 1 : 0", 0.0),
0.0
);
assert_eq!(
x.num("thisComp.layer('Title').text.sourceText.style.setBaselineOption('superscript').isSuperscript ? 1 : 0", 0.0),
1.0
);
assert_eq!(
x.text("var s = text.sourceText.style.setSuperscript(true); s.setText(s.isSuperscript ? 'super' : 'normal')", 0.0),
"super"
);
}