]> git.eshelyaron.com Git - emacs.git/commitdiff
(Qimage): Remove extern (now in lisp.h).
authorKim F. Storm <storm@cua.dk>
Sun, 28 Dec 2003 00:10:41 +0000 (00:10 +0000)
committerKim F. Storm <storm@cua.dk>
Sun, 28 Dec 2003 00:10:41 +0000 (00:10 +0000)
(QCmap): Declare extern.
(make_lispy_position): When position is inside image hot-spot,
use hot-spot element as posn element.

src/keyboard.c

index 6148a2510b8ca387d231d8c412c5407a570d4c97..3ac73750afc6c2175cd12b30d886c1f2fa6940a7 100644 (file)
@@ -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
            }
        }