summaryrefslogtreecommitdiff
path: root/pdf/pdf_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'pdf/pdf_event.c')
-rw-r--r--pdf/pdf_event.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/pdf/pdf_event.c b/pdf/pdf_event.c
index 61af6a29..f76058ce 100644
--- a/pdf/pdf_event.c
+++ b/pdf/pdf_event.c
@@ -79,6 +79,35 @@ void pdf_event_issue_exec_dialog(pdf_document *doc)
doc->event_cb(&e, doc->event_cb_data);
}
+typedef struct
+{
+ fz_doc_event base;
+ fz_launch_url_event launch_url;
+} fz_launch_url_event_internal;
+
+fz_launch_url_event *fz_access_launch_url_event(fz_doc_event *event)
+{
+ fz_launch_url_event *launch_url = NULL;
+
+ if (event->type == FZ_DOCUMENT_EVENT_LAUNCH_URL)
+ launch_url = &((fz_launch_url_event_internal *)event)->launch_url;
+
+ return launch_url;
+}
+
+void pdf_event_issue_launch_url(pdf_document *doc, char *url, int new_frame)
+{
+ if (doc->event_cb)
+ {
+ fz_launch_url_event_internal e;
+
+ e.base.type = FZ_DOCUMENT_EVENT_LAUNCH_URL;
+ e.launch_url.url = url;
+ e.launch_url.new_frame = new_frame;
+ doc->event_cb((fz_doc_event *)&e, doc->event_cb_data);
+ }
+}
+
void pdf_set_doc_event_callback(pdf_document *doc, fz_doc_event_cb *fn, void *data)
{
doc->event_cb = fn;