From 2e3f0f616bd831dbc6a09c9f753085c6caf563f8 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Sun, 28 Dec 2003 00:10:41 +0000 Subject: [PATCH] (Qimage): Remove extern (now in lisp.h). (QCmap): Declare extern. (make_lispy_position): When position is inside image hot-spot, use hot-spot element as posn element. --- src/keyboard.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index 6148a2510b8..3ac73750afc 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -587,7 +587,7 @@ Lisp_Object Qvertical_scroll_bar; Lisp_Object Qmenu_bar; extern Lisp_Object Qleft_margin, Qright_margin; extern Lisp_Object Qleft_fringe, Qright_fringe; -extern Lisp_Object Qimage; +extern Lisp_Object QCmap; Lisp_Object recursive_edit_unwind (), command_loop (); Lisp_Object Fthis_command_keys (); @@ -5024,6 +5024,19 @@ make_lispy_position (f, x, y, time) string = marginal_area_string (w, &rx, &ry, &dx, &dy, part, &charpos); if (STRINGP (string)) object = Fcons (string, make_number (charpos)); +#ifdef HAVE_WINDOW_SYSTEM + else if (IMAGEP (string)) + { + Lisp_Object image_map, hotspot; + object = string; + if ((image_map = Fplist_get (XCDR (object), QCmap), + !NILP (image_map)) + && (hotspot = find_hot_spot (image_map, dx, dy), + CONSP (hotspot)) + && (hotspot = XCDR (hotspot), CONSP (hotspot))) + posn = XCAR (hotspot); + } +#endif } else if (part == ON_LEFT_FRINGE || part == ON_RIGHT_FRINGE) { @@ -5059,8 +5072,19 @@ make_lispy_position (f, x, y, time) if (STRINGP (string)) object = Fcons (string, make_number (CHARPOS (p.string_pos))); - else if (CONSP (string) && EQ (XCAR (string), Qimage)) - object = string; +#ifdef HAVE_WINDOW_SYSTEM + else if (IMAGEP (string)) + { + Lisp_Object image_map, hotspot; + object = string; + if ((image_map = Fplist_get (XCDR (object), QCmap), + !NILP (image_map)) + && (hotspot = find_hot_spot (image_map, dx, dy), + CONSP (hotspot)) + && (hotspot = XCDR (hotspot), CONSP (hotspot))) + posn = XCAR (hotspot); + } +#endif } } -- 2.39.2