summaryrefslogtreecommitdiff
path: root/render/box.c
diff options
context:
space:
mode:
Diffstat (limited to 'render/box.c')
-rw-r--r--render/box.c30
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