# HG changeset patch # User Eli Zaretskii # Date 1258108500 0 # Node ID fb2c6de37340fd14df460e3d65cf56932d207b21 # Parent 801a779ab8f9c1a90c672e5c73d10e5084905635 (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 -r 801a779ab8f9 -r fb2c6de37340 lisp/textmodes/artist.el --- a/lisp/textmodes/artist.el Fri Nov 13 10:10:15 2009 +0000 +++ b/lisp/textmodes/artist.el Fri Nov 13 10:35:00 2009 +0000 @@ -4750,6 +4750,15 @@ "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 @@ (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 @@ (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))))