diff options
author | Karoly Lorentey <karoly@lorentey.hu> | 2007-04-22 12:42:47 +0000 |
---|---|---|
committer | Karoly Lorentey <karoly@lorentey.hu> | 2007-04-22 12:42:47 +0000 |
commit | 9d0799072a0d09bc14a99eaf372b262d1ba61399 (patch) | |
tree | 76acd4ae0559776a5ec27fbd5c25598285ec71d1 /lisp/xt-mouse.el | |
parent | e18c709364b095ea0be8ecabe458ac9a642a252f (diff) | |
parent | a20becf321f023c6dc1831595712576d64e2ef4b (diff) | |
download | emacs-9d0799072a0d09bc14a99eaf372b262d1ba61399.tar.gz |
Merged from emacs@sv.gnu.org
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-674
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-675
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-676
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-677
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-678
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-679
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-680
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-681
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-682
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-683
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-684
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-685
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-686
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-687
Release ERC 5.2.
* emacs@sv.gnu.org/emacs--devo--0--patch-688
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-689
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-690
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-691
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-692
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-693
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-694
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-695
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-696
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-697
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-698
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-699
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-700
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-701
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-209
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-210
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-211
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-212
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-213
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-214
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-215
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-601
Diffstat (limited to 'lisp/xt-mouse.el')
-rw-r--r-- | lisp/xt-mouse.el | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index 899049cef03..ede5f1359f7 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el @@ -50,7 +50,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) @@ -108,6 +109,8 @@ ;;(defvar xterm-mouse-y 0 ;; "Position of last xterm mouse event relative to the frame.") +(defvar xt-mouse-epoch nil) + ;; Indicator for the xterm-mouse mode. (defun xterm-mouse-position-function (pos) @@ -129,6 +132,13 @@ (let* ((type (- (xterm-mouse-event-read) #o40)) (x (- (xterm-mouse-event-read) #o40 1)) (y (- (xterm-mouse-event-read) #o40 1)) + ;; Emulate timestamp information. This is accurate enough + ;; for default value of mouse-1-click-follows-link (450msec). + (timestamp (truncate + (* 1000 + (- (float-time) + (or xt-mouse-epoch + (setq xt-mouse-epoch (float-time))))))) (mouse (intern ;; For buttons > 3, the release-event looks ;; differently (see xc/programs/xterm/button.c, @@ -136,6 +146,11 @@ ;; 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 @@ -150,10 +165,13 @@ (set-terminal-parameter nil 'xterm-mouse-y y) (setq last-input-event - (if w - (list mouse (posn-at-x-y (- x left) (- y top) w t)) - (list mouse - (append (list nil 'menu-bar) (nthcdr 2 (posn-at-x-y x y w t)))))))) + (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)))))) + (setcar (nthcdr 3 event) timestamp) + event))))) ;;;###autoload (define-minor-mode xterm-mouse-mode |