diff lisp/mouse.el @ 31258:12f2e341ee9c

(mouse-major-mode-menu): Use local-key-binding. (mouse-popup-menubar): Add minor mode menus. (popup-menu): Check for lookup-key returning number.
author Dave Love <fx@gnu.org>
date Tue, 29 Aug 2000 11:10:48 +0000
parents ad577e2e48d3
children f329cce08485
line wrap: on
line diff
--- a/lisp/mouse.el	Tue Aug 29 11:07:14 2000 +0000
+++ b/lisp/mouse.el	Tue Aug 29 11:10:48 2000 +0000
@@ -76,6 +76,8 @@
 		       binding)
 		   (while (and map (null binding))
 		     (setq binding (lookup-key (car map) mouse-click))
+		     (if (numberp binding) ; `too long'
+		       (setq binding nil))
 		     (setq map (cdr map)))
 		   binding)
 	       ;; We were given a single keymap.
@@ -111,7 +113,7 @@
 	 ;; Keymap from which to inherit; may be null.
 	 (ancestor (mouse-major-mode-menu-1
 		    (and (current-local-map)
-			 (lookup-key (current-local-map) [menu-bar]))))
+			 (local-key-binding [menu-bar]))))
 	 ;; Make a keymap in which our last command leads to a menu or
 	 ;; default to the edit menu.
 	 (newmap (if ancestor
@@ -169,6 +171,7 @@
 			  (lookup-key (current-local-map) [menu-bar])))
 	 (global-menu (lookup-key global-map [menu-bar]))
 	 (local-title-or-map (and local-menu (cadr local-menu)))
+	 (minor-mode-menus (mapcar #'cdr (minor-mode-key-binding [menu-bar])))
 	 (global-title-or-map (cadr global-menu)))
     ;; If the keymaps don't have prompt string (a lazy programmer
     ;; didn't bother to provide one), create it and insert it into the
@@ -184,9 +187,10 @@
 			        (cons "Global Menu"
 				      (cdr global-menu)))))
     ;; Supplying the list is faster than making a new map.
-    (popup-menu (if local-menu
-		    (list global-menu local-menu)
-		  (list global-menu))
+    (popup-menu (append (list global-menu)
+			(if local-menu
+			    (list local-menu))
+			minor-mode-menus)
 		event prefix)))
 
 (defun mouse-popup-menubar-stuff (event prefix)