From 03a1aac36a914317e3d7d82912fd1d2147e07c80 Mon Sep 17 00:00:00 2001 From: Adrian Lees Date: Fri, 30 Jan 2009 05:06:30 +0000 Subject: Selection- and link-related functions now on menu; other menu changes as per t's plan svn path=/trunk/netsurf/; revision=6296 --- render/box.c | 30 ++++++++++++++++++++++++++++++ render/box.h | 1 + 2 files changed, 31 insertions(+) (limited to 'render') diff --git a/render/box.c b/render/box.c index da82bf3f0..08272d166 100644 --- a/render/box.c +++ b/render/box.c @@ -481,6 +481,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. * diff --git a/render/box.h b/render/box.h index 7bee3813d..5d31a198b 100644 --- a/render/box.h +++ b/render/box.h @@ -297,6 +297,7 @@ struct box *box_at_point(struct box *box, int x, int y, int *box_x, int *box_y, struct content **content); struct box *box_object_at_point(struct content *c, int x, int y); +struct box *box_href_at_point(struct content *c, int x, int y); struct box *box_find_by_id(struct box *box, const char *id); bool box_visible(struct box *box); void box_dump(FILE *stream, struct box *box, unsigned int depth); -- cgit v1.2.3