diff src/keymap.c @ 157:6b37e6ddd302 r20-3b5

Import from CVS: tag r20-3b5
author cvs
date Mon, 13 Aug 2007 09:40:41 +0200
parents 8619ce7e4c50
children 28f395d8dc7a
line wrap: on
line diff
--- a/src/keymap.c	Mon Aug 13 09:39:46 2007 +0200
+++ b/src/keymap.c	Mon Aug 13 09:40:41 2007 +0200
@@ -49,7 +49,7 @@
 #undef MOD_SHIFT
 #endif
 
-#include <events-mod.h>
+#include "events-mod.h"
 
 
 /* A keymap contains four slots:
@@ -2417,6 +2417,12 @@
    margin, we should still consult the kemyap of that glyph's extent,
    which may not itself be under the mouse.
  */
+
+extern Lisp_Object Fextent_in_region_p(Lisp_Object extent,
+				       Lisp_Object from,
+				       Lisp_Object to,
+				       Lisp_Object flags);
+
 static void
 get_relevant_extent_keymaps (Lisp_Object pos, Lisp_Object buffer_or_string,
                              Lisp_Object glyph,
@@ -2436,14 +2442,17 @@
   if (!NILP (pos))
     {
       Lisp_Object extent;
-      for (extent = Fextent_at (pos, buffer_or_string, Qkeymap, Qnil, Qnil);
+      for (extent = Fextent_at (pos, buffer_or_string, Qkeymap, Qnil, Qat);
 	   !NILP (extent);
-	   extent = Fextent_at (pos, buffer_or_string, Qkeymap, extent, Qnil))
+	   extent = Fextent_at (pos, buffer_or_string, Qkeymap, extent, Qat))
 	{
-	  Lisp_Object keymap = Fextent_property (extent, Qkeymap, Qnil);
-	  if (!NILP (keymap))
-	    relevant_map_push (get_keymap (keymap, 1, 1), closure);
-	  QUIT;
+	  if (!NILP (Fextent_in_region_p (extent, pos, pos, Qnil)))
+	    {
+	      Lisp_Object keymap = Fextent_property (extent, Qkeymap, Qnil);
+	      if (!NILP (keymap))
+		relevant_map_push (get_keymap (keymap, 1, 1), closure);
+	      QUIT;
+	    }
 	}
     }
 }