diff src/keymap.c @ 284:558f606b08ae r21-0b40

Import from CVS: tag r21-0b40
author cvs
date Mon, 13 Aug 2007 10:34:13 +0200
parents c42ec1d1cded
children 9ea74add5d37
line wrap: on
line diff
--- a/src/keymap.c	Mon Aug 13 10:33:19 2007 +0200
+++ b/src/keymap.c	Mon Aug 13 10:34:13 2007 +0200
@@ -208,6 +208,8 @@
 
 static Lisp_Object Vkey_translation_map;
 
+static Lisp_Object Vvertical_divider_map;
+
 /* This is incremented whenever a change is made to a keymap.  This is
    so that things which care (such as the menubar code) can recompute
    privately-cached data when the user has changed keybindings.
@@ -2332,6 +2334,7 @@
   else
     {
       /* It's a mouse event; order of keymaps searched is:
+	 o  vertical-divider-map, if event is over a divider
 	 o  local-map of mouse-grabbed-buffer
 	 o  keymap of any/all extents under the mouse
 	 if the mouse is over a modeline:
@@ -2343,6 +2346,12 @@
 	 */
       Lisp_Object window = Fevent_window (terminal);
 
+      if (!NILP (Fevent_over_vertical_divider_p (terminal)))
+	{
+	  if (KEYMAPP (Vvertical_divider_map))
+	    relevant_map_push (Vvertical_divider_map, &closure);
+	}
+
       if (BUFFERP (Vmouse_grabbed_buffer))
 	{
 	  Lisp_Object map = XBUFFER (Vmouse_grabbed_buffer)->keymap;
@@ -2535,6 +2544,7 @@
 
 For mouse-clicks, the order of keymaps searched is:
   - the current-local-map of the `mouse-grabbed-buffer' if any;
+  - vertical-divider-map, if the event happened over a vertical divider
   - the `keymap' property of any extent(s) at the position of the click
     (this includes modeline extents);
   - the modeline-map of the buffer corresponding to the modeline under
@@ -4316,6 +4326,10 @@
 and applies even for keys that have ordinary bindings.
 */ );
 
+  DEFVAR_LISP ("vertical-divider-map", &Vvertical_divider_map /*
+Keymap which handles mouse clicks over vertical dividers.
+*/ );
+
   DEFVAR_INT ("keymap-tick", &keymap_tick /*
 Incremented for each change to any keymap.
 */ );