summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gardiner <paulg.artifex@glidos.net>2012-09-19 15:00:53 +0100
committerPaul Gardiner <paulg.artifex@glidos.net>2012-09-19 15:00:53 +0100
commit0a37a0c9098f2b2e50811055e4100872b3cad5ad (patch)
treef15126ede7a23d251b8c12799569b8bee66f57e0
parente9cf056f2d69b6ca5cb66f339978e461911e9c02 (diff)
downloadmupdf-0a37a0c9098f2b2e50811055e4100872b3cad5ad.tar.xz
Forms: handle 'additional' actions for mouse up and mouse down
-rw-r--r--pdf/pdf_form.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/pdf/pdf_form.c b/pdf/pdf_form.c
index 4cbf6614..6821e232 100644
--- a/pdf/pdf_form.c
+++ b/pdf/pdf_form.c
@@ -1753,6 +1753,21 @@ static void execute_action_chain(pdf_document *doc, pdf_obj *obj)
}
}
+static void execute_additional_action(pdf_document *doc, pdf_obj *obj, char *act)
+{
+ pdf_obj *a = pdf_dict_getp(obj, act);
+
+ if (a)
+ {
+ pdf_js_event e;
+
+ e.target = obj;
+ e.value = "";
+ pdf_js_setup_event(doc->js, &e);
+ execute_action(doc, obj, a);
+ }
+}
+
static void check_off(fz_context *ctx, pdf_obj *obj)
{
pdf_obj *off = NULL;
@@ -2004,6 +2019,8 @@ int pdf_pass_event(pdf_document *doc, pdf_page *page, fz_ui_event *ui_event)
hp->gen = pdf_to_gen(annot->obj);
hp->state = HOTSPOT_POINTER_DOWN;
changed = 1;
+ /* Exectute the down action */
+ execute_additional_action(doc, annot->obj, "AA/D");
}
break;
@@ -2027,6 +2044,9 @@ int pdf_pass_event(pdf_document *doc, pdf_page *page, fz_ui_event *ui_event)
break;
}
+ /* Execute the up action */
+ execute_additional_action(doc, annot->obj, "AA/U");
+ /* Execute the main action chain */
execute_action_chain(doc, annot->obj);
}
break;