summaryrefslogtreecommitdiff
path: root/render/box.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2004-07-18 17:38:01 +0000
committerJames Bursa <james@netsurf-browser.org>2004-07-18 17:38:01 +0000
commit58e2d033ece8c60f495ddba9a93ecab793a7a50f (patch)
tree6e4b9d4dfbdfe3ad02f1c8a8d7a7e3d4f9f74e29 /render/box.c
parentb09fdba4ed8caed190d2fcf7e51a165fc130bdd1 (diff)
downloadnetsurf-58e2d033ece8c60f495ddba9a93ecab793a7a50f.tar.gz
netsurf-58e2d033ece8c60f495ddba9a93ecab793a7a50f.tar.bz2
[project @ 2004-07-18 17:38:01 by bursa]
Improve form control interaction code. Replace box_under_area() with simpler box_at_point(). Detect objects for menu once on menu opening. Remove obsolete text selection code. svn path=/import/netsurf/; revision=1096
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 ef3b60283..145c3a18b 100644
--- a/render/box.c
+++ b/render/box.c
@@ -2785,3 +2785,33 @@ struct box *box_at_point(struct box *box, int x, int y,
return 0;
}
+
+
+/**
+ * Find the box containing an object 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_object_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 *object_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->object)
+ object_box = box;
+ }
+
+ return object_box;
+}