static void do_forms(float xofs, float yofs) { pdf_ui_event event; fz_point p; int i; for (i = 0; i < annot_count; ++i) ui_draw_image(&annot_tex[i], xofs - page_tex.x, yofs - page_tex.y); if (!pdf || search_active) return; p.x = xofs - page_tex.x + ui.x; p.y = xofs - page_tex.x + ui.y; fz_transform_point(&p, &page_inv_ctm); if (ui.down && !ui.active) { event.etype = PDF_EVENT_TYPE_POINTER; event.event.pointer.pt = p; event.event.pointer.ptype = PDF_POINTER_DOWN; if (pdf_pass_event(ctx, pdf, (pdf_page*)page, &event)) { if (pdf->focus) ui.active = do_forms; pdf_update_page(ctx, (pdf_page*)page); render_page(); ui_needs_update = 1; } } else if (ui.active == do_forms && !ui.down) { ui.active = NULL; event.etype = PDF_EVENT_TYPE_POINTER; event.event.pointer.pt = p; event.event.pointer.ptype = PDF_POINTER_UP; if (pdf_pass_event(ctx, pdf, (pdf_page*)page, &event)) { pdf_update_page(ctx, (pdf_page*)page); render_page(); ui_needs_update = 1; } } }
int fz_pass_event(fz_interactive *idoc, fz_page *page, fz_ui_event *ui_event) { return pdf_pass_event((pdf_document*)idoc, (pdf_page*)page, ui_event); }