summaryrefslogtreecommitdiff
path: root/src/keymap.c
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2006-09-11 02:34:05 +0000
committerChong Yidong <cyd@stupidchicken.com>2006-09-11 02:34:05 +0000
commitb067ddb637ea73f557012ab9e74e13d3e0ba0c7a (patch)
treef92ca2dd2b2648796b7e8496a877ce79d72db83e /src/keymap.c
parentc62a80738261d6817254ea13d398d3ef94a918e4 (diff)
downloademacs-b067ddb637ea73f557012ab9e74e13d3e0ba0c7a.tar.gz
* keymap.c (Fkey_binding): Check for local keymap for mouse click
events.
Diffstat (limited to 'src/keymap.c')
-rw-r--r--src/keymap.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/keymap.c b/src/keymap.c
index 4871179c420..1d854f77b4c 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1576,6 +1576,33 @@ is non-nil, `key-binding' returns the unmapped command. */)
GCPRO1 (key);
+#ifdef HAVE_MOUSE
+ if (VECTORP (key)
+ && ASIZE (key) > 0
+ && CONSP (AREF (key, 0))
+ && SYMBOLP (XCAR (AREF (key, 0)))
+ && CONSP (XCDR (AREF (key, 0))))
+ {
+ Lisp_Object map, obj, pos = XCAR (XCDR (AREF (key, 0)));
+
+ if (XINT (Flength (pos)) == 10 && INTEGERP (XCAR (XCDR (pos))))
+ {
+ obj = Fnth (make_number(4), pos);
+ map = Fget_char_property (XCAR (XCDR (pos)),
+ Qkeymap,
+ NILP (obj) ?
+ Fwindow_buffer (XCAR (pos))
+ : XCAR (obj));
+ if (!NILP (Fkeymapp (map)))
+ {
+ value = Flookup_key (map, key, accept_default);
+ if (! NILP (value) && !INTEGERP (value))
+ goto done;
+ }
+ }
+ }
+#endif /* HAVE_MOUSE */
+
if (!NILP (current_kboard->Voverriding_terminal_local_map))
{
value = Flookup_key (current_kboard->Voverriding_terminal_local_map,