diff options
Diffstat (limited to 'render/box.c')
-rw-r--r-- | render/box.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/render/box.c b/render/box.c index da82bf3f0..08272d166 100644 --- a/render/box.c +++ b/render/box.c @@ -482,6 +482,36 @@ struct box *box_object_at_point(struct content *c, int x, int y) /** + * Find the box containing an href at the given coordinates, if any. + * + * \param c content to search, must have type CONTENT_HTML + * \param x coordinates in document units + * \param y coordinates in document units + */ + +struct box *box_href_at_point(struct content *c, int x, int y) +{ + struct box *box = c->data.html.layout; + int box_x = 0, box_y = 0; + struct content *content = c; + struct box *href_box = 0; + + assert(c->type == CONTENT_HTML); + + while ((box = box_at_point(box, x, y, &box_x, &box_y, &content))) { + if (box->style && + box->style->visibility == CSS_VISIBILITY_HIDDEN) + continue; + + if (box->href) + href_box = box; + } + + return href_box; +} + + +/** * Find a box based upon its id attribute. * * \param box box tree to search |