summaryrefslogtreecommitdiff
path: root/lisp/frame.el
diff options
context:
space:
mode:
authorCharles A. Roelli <charles@aurox.ch>2017-05-18 21:31:46 +0200
committerAlan Third <alan@idiocy.org>2017-05-21 00:09:41 +0100
commit7e5a8cdceb408077df78b1ea810b1f5d4657303d (patch)
tree0b8ec76811bc1e66aa3fbfa5ad594a3e6cbb302a /lisp/frame.el
parentc969b3997168de2bbe781fbcb08b67b15eddc02d (diff)
downloademacs-7e5a8cdceb408077df78b1ea810b1f5d4657303d.tar.gz
Fix macOS mouse movement
* lisp/frame.el (ns-set-mouse-absolute-pixel-position): New function (Lisp). (set-mouse-absolute-pixel-position): Change it to call `ns-set-mouse-absolute-pixel-position' on macOS. * src/nsfns.m (Fns_set_mouse_absolute_pixel_position): New function. * src/nsterm.h (NS_PARENT_WINDOW_TOP_POS): Use the primary screen's height as a base for calculating global coordinates. * src/nsterm.m (frame_set_mouse_pixel_position): Fix it in macOS. * test/lisp/mouse-tests.el (bug26816-mouse-frame-movement): Test movement of mouse relative to frame.
Diffstat (limited to 'lisp/frame.el')
-rw-r--r--lisp/frame.el3
1 files changed, 3 insertions, 0 deletions
diff --git a/lisp/frame.el b/lisp/frame.el
index 05db8cf6fd4..02871e0551d 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -1465,6 +1465,7 @@ position (0, 0) of the selected frame's terminal."
(t
(cons 0 0)))))
+(declare-function ns-set-mouse-absolute-pixel-position "nsfns.m" (x y))
(declare-function w32-set-mouse-absolute-pixel-position "w32fns.c" (x y))
(declare-function x-set-mouse-absolute-pixel-position "xfns.c" (x y))
@@ -1474,6 +1475,8 @@ The coordinates X and Y are interpreted in pixels relative to a
position (0, 0) of the selected frame's terminal."
(let ((frame-type (framep-on-display)))
(cond
+ ((eq frame-type 'ns)
+ (ns-set-mouse-absolute-pixel-position x y))
((eq frame-type 'x)
(x-set-mouse-absolute-pixel-position x y))
((eq frame-type 'w32)