diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/pdf/pdf-form.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/source/pdf/pdf-form.c b/source/pdf/pdf-form.c index a8dc4062..96b8d652 100644 --- a/source/pdf/pdf-form.c +++ b/source/pdf/pdf-form.c @@ -716,19 +716,28 @@ int pdf_widget_type(fz_context *ctx, pdf_widget *widget) static int set_text_field_value(fz_context *ctx, pdf_document *doc, pdf_obj *field, const char *text) { pdf_obj *v = pdf_dict_getp(ctx, field, "AA/V"); + pdf_obj *f = pdf_dict_getp(ctx, field, "AA/F"); if (v && doc->js) { pdf_js_event e; - e.target = field; e.value = fz_strdup(ctx, text); pdf_js_setup_event(doc->js, &e); execute_action(ctx, doc, field, v); - if (!pdf_js_get_event(doc->js)->rc) return 0; - + text = pdf_js_get_event(doc->js)->value; + } + if (f && doc->js) + { + pdf_js_event e; + e.target = field; + e.value = fz_strdup(ctx, text); + pdf_js_setup_event(doc->js, &e); + execute_action(ctx, doc, field, f); + if (!pdf_js_get_event(doc->js)->rc) + return 0; text = pdf_js_get_event(doc->js)->value; } |