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.
This commit is contained in:
parent
de3d0b572d
commit
f167c27b19
2 changed files with 23 additions and 13 deletions
|
|
@ -1,3 +1,9 @@
|
|||
2013-09-02 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* avoid.el (mouse-avoidance-point-position)
|
||||
(mouse-avoidance-too-close-p): Handle case where posn-at-point
|
||||
returns nil.
|
||||
|
||||
2013-09-02 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||
|
||||
* progmodes/python.el (python-shell-completion-get-completions):
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue