Rearrange.
authorueno <ueno>
Wed, 13 Sep 2000 07:25:01 +0000 (07:25 +0000)
committerueno <ueno>
Wed, 13 Sep 2000 07:25:01 +0000 (07:25 +0000)
semi-def.el

index ba0e34f..83935f2 100644 (file)
 ;;; @ menu
 ;;;
 
-(defmacro mime-popup-menu-bogus-filter-constructor (menu)
-  `(let (x y)
-     (setq x (x-popup-menu t ,menu)
-          y (and x (lookup-key ,menu (apply #'vector x))))
-     (if (and x y)
-        (funcall y))))
+(defmacro mime-popup-menu-bogus-filter-constructor (menu &optional modal)
+  ;; #### Kludge for FSF Emacs-style menu.
+  (let ((bogus-menu (make-symbol "bogus-menu")))
+    `(let (,bogus-menu selection function)
+       (easy-menu-define ,bogus-menu nil nil ,menu)
+       (setq selection (x-popup-menu t ,bogus-menu))
+       ,(if modal
+           `selection
+         `(when selection
+            (setq function (lookup-key ,bogus-menu (apply #'vector selection)))
+            (if function
+                (funcall function)))))))
 
 ;;; While XEmacs can have both X and tty frames at the same time with
 ;;; gnuclient, we shouldn't emulate in text-mode here.
 (static-if (featurep 'xemacs)
     (defalias 'mime-popup-menu-popup 'popup-menu)
   (defun mime-popup-menu-popup (menu &optional event)
-    (let (bogus-menu)
-      ;; #### Kludge for FSF Emacs-style menu.
-      (easy-menu-define bogus-menu nil nil menu)
-      (mime-popup-menu-bogus-filter-constructor bogus-menu))))
+    (mime-popup-menu-bogus-filter-constructor menu)))
 
 (static-if (featurep 'xemacs)
     (defun mime-popup-menu-select (menu &optional event)
       (let ((selection (get-popup-menu-response menu event)))
        (event-object selection)))
   (defun mime-popup-menu-select (menu &optional event)
-    (let (bogus-menu)
-      ;; #### Kludge for FSF Emacs-style menu.
-      (easy-menu-define bogus-menu nil nil menu)
-      (x-popup-menu t bogus-menu))))
+    (mime-popup-menu-bogus-filter-constructor menu 'modal)))
 
 
 ;;; @ Other Utility