]> git.eshelyaron.com Git - emacs.git/commitdiff
* keymap.c (Fkey_binding): Check for local keymap for mouse click
authorChong Yidong <cyd@stupidchicken.com>
Mon, 11 Sep 2006 02:34:05 +0000 (02:34 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Mon, 11 Sep 2006 02:34:05 +0000 (02:34 +0000)
events.

src/ChangeLog
src/keymap.c

index 2bc50904caac46fc9ab6ce1b72722868a4b516b4..a2fa51db1b2455b15f924f01813b282aaa024c98 100644 (file)
@@ -1,3 +1,8 @@
+2006-09-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymap.c (Fkey_binding): Check for local keymap for mouse click
+       events.
+
 2006-09-10  Kim F. Storm  <storm@cua.dk>
 
        * keyboard.c (Finput_pending_p): Check Vunread_input_method_events
index 4871179c420f0644fd6b51d9a7d44bbeadb1e0f6..1d854f77b4c4a3a7ebd04443092a94385b92a422 100644 (file)
@@ -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,