diff options
author | Martin Rudalics <rudalics@gmx.at> | 2013-09-02 09:11:26 +0200 |
---|---|---|
committer | Martin Rudalics <rudalics@gmx.at> | 2013-09-02 09:11:26 +0200 |
commit | f167c27b1973c9f2f7a8755c07f23ea671ba1bf1 (patch) | |
tree | c05a7fcfdef282b9fea0be17af2dc32a50bee818 /lisp/avoid.el | |
parent | de3d0b572de7b7c03ba3a2c4153d89e50f411da9 (diff) | |
download | emacs-f167c27b1973c9f2f7a8755c07f23ea671ba1bf1.tar.gz |
In avoid.el handle case where posn-at-point returns nil.
* avoid.el (mouse-avoidance-point-position)
(mouse-avoidance-too-close-p): Handle case where posn-at-point
returns nil.
Diffstat (limited to 'lisp/avoid.el')
-rw-r--r-- | lisp/avoid.el | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/lisp/avoid.el b/lisp/avoid.el index aaccd0974a4..72f90a30ff5 100644 --- a/lisp/avoid.el +++ b/lisp/avoid.el @@ -154,13 +154,15 @@ TOP-OR-BOTTOM-POS: Distance from top or bottom edge of frame or window." (defun mouse-avoidance-point-position () "Return the position of point as (FRAME X . Y). Analogous to `mouse-position'." - (let ((edges (window-inside-edges)) - (x-y (posn-x-y (posn-at-point)))) - (cons (selected-frame) - (cons (+ (car edges) - (/ (car x-y) (frame-char-width))) - (+ (car (cdr edges)) - (/ (cdr x-y) (frame-char-height))))))) + (let* ((edges (window-inside-edges)) + (posn-at-point (posn-at-point)) + (x-y (and posn-at-point (posn-x-y posn-at-point)))) + (when x-y + (cons (selected-frame) + (cons (+ (car edges) + (/ (car x-y) (frame-char-width))) + (+ (car (cdr edges)) + (/ (cdr x-y) (frame-char-height)))))))) ;(defun mouse-avoidance-point-position-test () ; (interactive) @@ -185,19 +187,21 @@ MOUSE is the current mouse position as returned by `mouse-position'. Acceptable distance is defined by `mouse-avoidance-threshold'." (let* ((frame (car mouse)) (mouse-y (cdr (cdr mouse))) - (tool-bar-lines (frame-parameter nil 'tool-bar-lines))) + (tool-bar-lines (frame-parameter nil 'tool-bar-lines)) + point) (or tool-bar-lines (setq tool-bar-lines 0)) - (if (and mouse-y (< mouse-y tool-bar-lines)) - nil - (let ((point (mouse-avoidance-point-position)) - (mouse-x (car (cdr mouse)))) + (cond + ((and mouse-y (< mouse-y tool-bar-lines)) + nil) + ((setq point (mouse-avoidance-point-position)) + (let ((mouse-x (car (cdr mouse)))) (and (eq frame (car point)) (not (null mouse-x)) (< (abs (- mouse-x (car (cdr point)))) mouse-avoidance-threshold) (< (abs (- mouse-y (cdr (cdr point)))) - mouse-avoidance-threshold)))))) + mouse-avoidance-threshold))))))) (defun mouse-avoidance-banish-destination () "The position to which Mouse Avoidance mode `banish' moves the mouse. |