summaryrefslogtreecommitdiff
path: root/desktop/browser.c
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/browser.c')
-rw-r--r--desktop/browser.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index 3b9294ade..305f7186f 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -24,6 +24,7 @@
#include "netsurf/desktop/401login.h"
#endif
#include "netsurf/desktop/browser.h"
+#include "netsurf/desktop/imagemap.h"
#include "netsurf/render/box.h"
#include "netsurf/render/font.h"
#include "netsurf/render/form.h"
@@ -1362,6 +1363,34 @@ void browser_window_follow_link(struct browser_window *bw,
free(url);
break;
}
+ if (click_boxes[i].box->usemap != NULL) {
+ char *href, *url;
+
+ href = imagemap_get(bw->current_content,
+ click_boxes[i].box->usemap,
+ click_boxes[i].actual_x,
+ click_boxes[i].actual_y,
+ click_x, click_y);
+ if (!href)
+ continue;
+
+ url = url_join(href,
+ bw->current_content->data.html.
+ base_url);
+ if (!url)
+ continue;
+
+ if (click_type == 1) {
+ browser_window_go(bw, url);
+ } else if (click_type == 2) {
+ browser_window_create(url);
+ } else if (click_type == 0) {
+ browser_window_set_status(bw, url);
+ done = 1;
+ }
+ free(url);
+ break;
+ }
if (click_type == 0 && click_boxes[i].box->title != NULL) {
browser_window_set_status(bw,
click_boxes[i].box->