*** empty log message ***
[bpt/emacs.git] / lisp / xt-mouse.el
index f4634a7..8ae7990 100644 (file)
@@ -49,7 +49,8 @@
 
 ;; Mouse events symbols must have an 'event-kind property with
 ;; the value 'mouse-click.
-(dolist (event-type '(mouse-1 mouse-2 mouse-3))
+(dolist (event-type '(mouse-1 mouse-2 mouse-3
+                             M-down-mouse-1 M-down-mouse-2 M-down-mouse-3))
   (put event-type 'event-kind 'mouse-click))
 
 (defun xterm-mouse-translate (event)
   (let* ((type (- (xterm-mouse-event-read) #o40))
         (x (- (xterm-mouse-event-read) #o40 1))
         (y (- (xterm-mouse-event-read) #o40 1))
-        (time (current-time))
+        ;; Emulate timestamp information.  This is accurate enough
+        ;; for default value of mouse-1-click-follows-link (450msec).
         (timestamp (truncate
                     (* 1000
                        (- (float-time)
                 ;; a release-event only, no down-event.
                 (cond ((>= type 64)
                        (format "mouse-%d" (- type 60)))
+                      ((memq type '(8 9 10))
+                       (setq xterm-mouse-last type)
+                       (format "M-down-mouse-%d" (- type 7)))
+                      ((= type 11)
+                       (format "mouse-%d" (- xterm-mouse-last 7)))
                       ((= type 3)
                        (format "mouse-%d" (+ 1 xterm-mouse-last)))
                       (t
          xterm-mouse-y y)
     (setq
      last-input-event
-     (list mouse 
+     (list mouse
           (let ((event (if w
                            (posn-at-x-y (- x left) (- y top) w t)
                          (append (list nil 'menu-bar)
-                                 (nthcdr 2 (posn-at-x-y x y w t))))))
+                                 (nthcdr 2 (posn-at-x-y x y))))))
             (setcar (nthcdr 3 event) timestamp)
             event)))))