For text widgets, get the text from the AP stream instead of from the format callback (bug 1825002)

When fixing bug 1766987, I thought the field formatted value came from
the result of the format callback: I was wrong. The format callback is ran
but the value is unused (maybe it's useful to set some global vars... or
it's just a bug in Acrobat). Anyway the value to display is the one rendered
in the AP stream.
The field value setter has been simplified and that fixes issue #16409.
This commit is contained in:
Calixte Denizet 2023-05-16 23:03:01 +02:00
parent 5ae353cf4d
commit 177036e6ae
7 changed files with 93 additions and 35 deletions

View file

@ -98,8 +98,9 @@ class EventDispatcher {
// errors in the case where a formatter is using one of those named
// actions (see #15818).
this._document.obj._initActions();
// Before running the Open event, we format all the fields
// (see bug 1766987).
// Before running the Open event, we run the format callbacks but
// without changing the value of the fields.
// Acrobat does the same thing.
this.formatAll();
}
if (
@ -232,13 +233,7 @@ class EventDispatcher {
const event = (globalThis.event = new Event({}));
for (const source of Object.values(this._objects)) {
event.value = source.obj.value;
if (this.runActions(source, source, event, "Format")) {
source.obj._send({
id: source.obj._id,
siblings: source.obj._siblings,
formattedValue: event.value?.toString?.(),
});
}
this.runActions(source, source, event, "Format");
}
}