summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorPaul Gardiner <paul.gardiner@artifex.com>2018-08-21 10:05:10 +0100
committerPaul Gardiner <paul.gardiner@artifex.com>2018-08-21 12:09:40 +0100
commit1a4fc8250f89e316c0a8cdb71fa47dd591255176 (patch)
tree26d170693ae0027a0fe9d91113039a98f3775d02 /source
parent781e6d58b23fc3b18549908fcc4b2163175d42a9 (diff)
downloadmupdf-1a4fc8250f89e316c0a8cdb71fa47dd591255176.tar.xz
Choose the lastmost annotation rather than firstmost as mouse event target.
pdf_pass_event iterates through the annotations to find one with a bounding box that encompasses the event point. We were choosing the first found, whereas later annotations are considered above earlier ones so we should be choosing the last found.
Diffstat (limited to 'source')
-rw-r--r--source/pdf/pdf-form.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/source/pdf/pdf-form.c b/source/pdf/pdf-form.c
index 879c7819..2a7d80b1 100644
--- a/source/pdf/pdf-form.c
+++ b/source/pdf/pdf-form.c
@@ -532,7 +532,8 @@ int pdf_has_unsaved_changes(fz_context *ctx, pdf_document *doc)
int pdf_pass_event(fz_context *ctx, pdf_document *doc, pdf_page *page, pdf_ui_event *ui_event)
{
- pdf_annot *annot;
+ pdf_annot *a;
+ pdf_annot *annot = NULL;
pdf_hotspot *hp = &doc->hotspot;
fz_point *pt = &(ui_event->event.pointer.pt);
int changed = 0;
@@ -541,12 +542,12 @@ int pdf_pass_event(fz_context *ctx, pdf_document *doc, pdf_page *page, pdf_ui_ev
if (page == NULL)
return 0;
- for (annot = page->annots; annot; annot = annot->next)
+ for (a = page->annots; a; a = a->next)
{
- bbox = pdf_bound_annot(ctx, annot);
+ bbox = pdf_bound_annot(ctx, a);
if (pt->x >= bbox.x0 && pt->x <= bbox.x1)
if (pt->y >= bbox.y0 && pt->y <= bbox.y1)
- break;
+ annot = a;
}
/* Skip hidden annotations. */