Mercurial > hg > xemacs-beta
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; + } } } }