[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/xt-mouse.el,v [EMACS_22_BASE]
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/xt-mouse.el,v [EMACS_22_BASE] |
Date: |
Fri, 25 May 2007 15:00:41 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Branch: EMACS_22_BASE
Changes by: Stefan Monnier <monnier> 07/05/25 15:00:41
Index: xt-mouse.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/xt-mouse.el,v
retrieving revision 1.39
retrieving revision 1.39.2.1
diff -u -b -r1.39 -r1.39.2.1
--- xt-mouse.el 3 Apr 2007 21:16:17 -0000 1.39
+++ xt-mouse.el 25 May 2007 15:00:41 -0000 1.39.2.1
@@ -122,6 +122,22 @@
(+ c #x8000000 128)
c)))
+(defun xterm-mouse-truncate-wrap (f)
+ "Truncate with wrap-around."
+ (condition-case nil
+ ;; First try the built-in truncate, in case there's no overflow.
+ (truncate f)
+ ;; In case of overflow, do wraparound by hand.
+ (range-error
+ ;; In our case, we wrap around every 3 days or so, so if we assume
+ ;; a maximum of 65536 wraparounds, we're safe for a couple years.
+ ;; Using a power of 2 makes rounding errors less likely.
+ (let* ((maxwrap (* 65536 2048))
+ (dbig (truncate (/ f maxwrap)))
+ (fdiff (- f (* 1.0 maxwrap dbig))))
+ (+ (truncate fdiff) (* maxwrap dbig))))))
+
+
(defun xterm-mouse-event ()
"Convert XTerm mouse event to Emacs mouse event."
(let* ((type (- (xterm-mouse-event-read) #o40))
@@ -129,7 +145,7 @@
(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
+ (timestamp (xterm-mouse-truncate-wrap
(* 1000
(- (float-time)
(or xt-mouse-epoch
@@ -206,5 +222,5 @@
(provide 'xt-mouse)
-;;; arch-tag: 84962d4e-fae9-4c13-a9d7-ef4925a4ac03
+;; arch-tag: 84962d4e-fae9-4c13-a9d7-ef4925a4ac03
;;; xt-mouse.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/xt-mouse.el,v [EMACS_22_BASE],
Stefan Monnier <=