X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fmenubar.el;h=b26065c44c2bc42e27fc432621d7904b447294bd;hb=93b4859ea602158208485a5b1253e46be6da4e53;hp=917b49c269ccb718167da577f831b0265b5cfb12;hpb=3062d425fac0473eb5aa2efc0bb002f6ce0cb028;p=chise%2Fxemacs-chise.git.1 diff --git a/lisp/menubar.el b/lisp/menubar.el index 917b49c..b26065c 100644 --- a/lisp/menubar.el +++ b/lisp/menubar.el @@ -544,10 +544,10 @@ button was clicked." (setq mode-filters (nreverse mode-filters)) ;; If mode-filters contains a keyword already present in ;; `global-popup-menu', you will probably lose. - (append (and popup-menu-titles - (cond (mode-title (list mode-title)) - (global-title (list global-title)) - (t ""))) + (append (cond ((not popup-menu-titles) (list "")) + (mode-title (list mode-title)) + (global-title (list global-title)) + (t (list ""))) mode-filters context-menu-items (and context-menu-items mode-items '("---")) @@ -671,6 +671,10 @@ If no response was received, nil is returned. MENU-DESC and EVENT are as in the call to `popup-menu'." ;; partially stolen from w3 + + ;; This function is way gross and assumes to much about menu + ;; processing that is X specific. Under mswindows popup menus behave + ;; in reasonable ways that you can't obstruct. (let ((echo-keystrokes 0) new-event) (popup-menu menu-desc event) @@ -679,14 +683,22 @@ MENU-DESC and EVENT are as in the call to `popup-menu'." (setq new-event (next-command-event new-event)) (cond ((misc-user-event-p new-event) (throw 'popup-done new-event)) - ((not (popup-up-p)) - (setq unread-command-events (cons new-event - unread-command-events)) - (throw 'popup-done nil)) ((button-release-event-p new-event);; don't beep twice nil) - ((event-matches-key-specifier-p (quit-char)) + ;; It shows how bogus this function is that the event + ;; arg could be missing and no-one noticed ... + ((event-matches-key-specifier-p new-event (quit-char)) (signal 'quit nil)) + ;; mswindows has no pop-down processing (selection is + ;; atomic) so doing anything more makes no sense. Since + ;; popup-up-p is always false under mswindows, this + ;; function has been ordered to do essentially X-specifc + ;; processing after this check. + ((not (popup-up-p)) + (setq unread-command-events (cons new-event + unread-command-events)) + (throw 'popup-done nil)) + ;; mswindows never gets here (t (beep) (message "please make a choice from the menu.")))))))