From: Eli Zaretskii Date: Fri, 13 Nov 2009 10:35:39 +0000 (+0000) Subject: (artist-mouse-choose-operation): Call `tmm-prompt' instead of `x-popup-menu' X-Git-Tag: emacs-pretest-23.1.90~460 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=14bd267de01f53607514a8e5b8cf4a7e8d351d9b;p=emacs.git (artist-mouse-choose-operation): Call `tmm-prompt' instead of `x-popup-menu' if we cannot popup menus. (artist-compute-up-event-key): New function. (artist-mouse-choose-operation, artist-down-mouse-1): Call it. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 547d317a6bc..fa3beffc34c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2009-11-13 Tomas Abrahamsson + + * textmodes/artist.el (artist-mouse-choose-operation): Call + `tmm-prompt' instead of `x-popup-menu' if we cannot popup + menus. Bug noticed by Eli Zaretskii . + (artist-compute-up-event-key): New function. + (artist-mouse-choose-operation, artist-down-mouse-1): Call it. + 2009-11-13 Kenichi Handa * language/japan-util.el: Make sure that the value of jisx0208 diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index c69e3bc37ab..03cb77bc148 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el @@ -4750,6 +4750,15 @@ If optional argument STATE is positive, turn borders on." "Function that does nothing." (interactive)) +(defun artist-compute-up-event-key (ev) + "Compute the corresponding up key sequence for event EV." + (let* ((basic (event-basic-type ev)) + (unshifted basic) + (shifted (make-symbol (concat "S-" (symbol-name basic))))) + (if (artist-event-is-shifted ev) + (make-vector 1 shifted) + (make-vector 1 unshifted)))) + (defun artist-down-mouse-1 (ev) "Perform drawing action for event EV." (interactive "@e") @@ -4761,15 +4770,10 @@ If optional argument STATE is positive, turn borders on." (orig-draw-region-min-y artist-draw-region-min-y) (orig-draw-region-max-y artist-draw-region-max-y) (orig-pointer-shape (if (eq window-system 'x) x-pointer-shape nil)) - (echo-keystrokes 10000) ; a lot of seconds + (echoq-keystrokes 10000) ; a lot of seconds ;; Remember original binding for the button-up event to this ;; button-down event. - (key (let* ((basic (event-basic-type ev)) - (unshifted basic) - (shifted (make-symbol (concat "S-" (symbol-name basic))))) - (if (artist-event-is-shifted ev) - (make-vector 1 shifted) - (make-vector 1 unshifted)))) + (key (artist-compute-up-event-key ev)) (orig-button-up-binding (lookup-key (current-global-map) key))) (unwind-protect @@ -4835,7 +4839,21 @@ If optional argument STATE is positive, turn borders on." (progn (select-window (posn-window (event-start last-input-event))) (list last-input-event - (x-popup-menu last-nonmenu-event artist-popup-menu-table)))) + (if (display-popup-menus-p) + (x-popup-menu last-nonmenu-event artist-popup-menu-table) + 'no-popup-menus)))) + + (if (eq op 'no-popup-menus) + ;; No popup menus. Call `tmm-prompt' instead, but with the + ;; up-mouse-button, if any, temporarily disabled, otherwise + ;; it'll interfere. + (let* ((key (artist-compute-up-event-key ev)) + (orig-button-up-binding (lookup-key (current-global-map) key))) + (unwind-protect + (define-key (current-global-map) key 'artist-do-nothing) + (setq op (tmm-prompt artist-popup-menu-table)) + (if orig-button-up-binding + (define-key (current-global-map) key orig-button-up-binding))))) (let ((draw-fn (artist-go-get-draw-fn-from-symbol (car op))) (set-fn (artist-fc-get-fn-from-symbol (car op))))