summaryrefslogtreecommitdiff
path: root/lisp/avoid.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2006-08-10 03:37:29 +0000
committerChong Yidong <cyd@stupidchicken.com>2006-08-10 03:37:29 +0000
commit38ceb48f7f509590630c79c0709d3ecafd2c63e1 (patch)
treeec1003fa56cae12a71d676ee2b9526374ecbec9b /lisp/avoid.el
parent541a0de1e2dedd333a586886bd8cea35082133a4 (diff)
downloademacs-38ceb48f7f509590630c79c0709d3ecafd2c63e1.tar.gz
* avoid.el (mouse-avoidance-animating-pointer): New var.
(mouse-avoidance-nudge-mouse): Use it. (mouse-avoidance-banish): Rename from mouse-avoidance-banish-hook. (mouse-avoidance-exile): Rename from mouse-avoidance-exile-hook (mouse-avoidance-fancy): Rename from mouse-avoidance-fancy-hook. Don't activate if currently animating. All callers changed.
Diffstat (limited to 'lisp/avoid.el')
-rw-r--r--lisp/avoid.el25
1 files changed, 15 insertions, 10 deletions
diff --git a/lisp/avoid.el b/lisp/avoid.el
index 1868707720e..b497c2007bd 100644
--- a/lisp/avoid.el
+++ b/lisp/avoid.el
@@ -124,6 +124,7 @@ Only applies in mouse-avoidance-modes `animate' and `jump'."
(defvar mouse-avoidance-pointer-shapes nil)
(defvar mouse-avoidance-n-pointer-shapes 0)
(defvar mouse-avoidance-old-pointer-shape nil)
+(defvar mouse-avoidance-animating-pointer nil)
;; This timer is used to run something when Emacs is idle.
(defvar mouse-avoidance-timer nil)
@@ -243,16 +244,19 @@ You can redefine this if you want the mouse banished to a different corner."
(+ (cdr mouse-avoidance-state) deltay)))
(if (or (eq mouse-avoidance-mode 'animate)
(eq mouse-avoidance-mode 'proteus))
- (let ((i 0.0))
+ (let ((i 0.0)
+ (incr (max .1 (/ 1.0 mouse-avoidance-nudge-dist))))
+ (setq mouse-avoidance-animating-pointer t)
(while (<= i 1)
(mouse-avoidance-set-mouse-position
(cons (+ (car cur-pos) (round (* i deltax)))
(+ (cdr cur-pos) (round (* i deltay)))))
- (setq i (+ i (max .1 (/ 1.0 mouse-avoidance-nudge-dist))))
+ (setq i (+ i incr))
(if (eq mouse-avoidance-mode 'proteus)
(mouse-avoidance-set-pointer-shape
(mouse-avoidance-random-shape)))
- (sit-for mouse-avoidance-animation-delay)))
+ (sit-for mouse-avoidance-animation-delay))
+ (setq mouse-avoidance-animating-pointer nil))
(mouse-avoidance-set-mouse-position (cons (+ (car (cdr cur)) deltax)
(+ (cdr (cdr cur)) deltay))))))
@@ -294,11 +298,11 @@ redefine this function to suit your own tastes."
(memq 'drag modifiers)
(memq 'down modifiers)))))))
-(defun mouse-avoidance-banish-hook ()
+(defun mouse-avoidance-banish ()
(if (not (mouse-avoidance-ignore-p))
(mouse-avoidance-banish-mouse)))
-(defun mouse-avoidance-exile-hook ()
+(defun mouse-avoidance-exile ()
;; For exile mode, the state is nil when the mouse is in its normal
;; position, and set to the old mouse-position when the mouse is in exile.
(if (not (mouse-avoidance-ignore-p))
@@ -317,9 +321,10 @@ redefine this function to suit your own tastes."
;; but clear state anyway, to be ready for another move
(setq mouse-avoidance-state nil))))))
-(defun mouse-avoidance-fancy-hook ()
+(defun mouse-avoidance-fancy ()
;; Used for the "fancy" modes, ie jump et al.
- (if (and (not (mouse-avoidance-ignore-p))
+ (if (and (not mouse-avoidance-animating-pointer)
+ (not (mouse-avoidance-ignore-p))
(mouse-avoidance-too-close-p (mouse-position)))
(let ((old-pos (mouse-position)))
(mouse-avoidance-nudge-mouse)
@@ -375,14 +380,14 @@ definition of \"random distance\".)"
(eq mode 'animate)
(eq mode 'proteus))
(setq mouse-avoidance-timer
- (run-with-idle-timer 0.1 t 'mouse-avoidance-fancy-hook))
+ (run-with-idle-timer 0.1 t 'mouse-avoidance-fancy))
(setq mouse-avoidance-mode mode
mouse-avoidance-state (cons 0 0)
mouse-avoidance-old-pointer-shape
(and (boundp 'x-pointer-shape) x-pointer-shape)))
((eq mode 'exile)
(setq mouse-avoidance-timer
- (run-with-idle-timer 0.1 t 'mouse-avoidance-exile-hook))
+ (run-with-idle-timer 0.1 t 'mouse-avoidance-exile))
(setq mouse-avoidance-mode mode
mouse-avoidance-state nil))
((or (eq mode 'banish)
@@ -390,7 +395,7 @@ definition of \"random distance\".)"
(and (null mode) (null mouse-avoidance-mode))
(and mode (> (prefix-numeric-value mode) 0)))
(setq mouse-avoidance-timer
- (run-with-idle-timer 0.1 t 'mouse-avoidance-banish-hook))
+ (run-with-idle-timer 0.1 t 'mouse-avoidance-banish))
(setq mouse-avoidance-mode 'banish))
(t (setq mouse-avoidance-mode nil)))
(force-mode-line-update))