GNU bug report logs -
#17439
24.3.50; run-with-idle-timer runs on focus-out
Previous Next
Reported by: Juri Linkov <juri <at> jurta.org>
Date: Thu, 8 May 2014 20:56:01 UTC
Severity: important
Found in version 24.3.50
Done: Juri Linkov <juri <at> jurta.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Some change a few months ago introduced a significant inconvenience.
After switching to another application, the focus returns back to Emacs.
It happens when using `mouse-avoidance-mode' customized to `banish'.
This mode relies on `run-with-idle-timer' that moves the mouse cursor
on a new input. This caused no problems in prior releases.
However, now input events include a new event type `focus-out',
so the mouse cursor is moved on switching from Emacs frame
(and the new mouse cursor position puts the focus back
due to specific configuration).
This code illustrates the problem:
(defun test () (message "%S" last-input-event))
(setq timer (run-with-idle-timer 0.1 t 'test))
On switching out it prints to *Messages*:
(focus-in #<frame emacs <at> localhost 0x1121908>)
(focus-out #<frame emacs <at> localhost 0x1121908>)
This specific problem can be fixed by this patch:
=== modified file 'lisp/avoid.el'
--- lisp/avoid.el 2014-01-31 06:42:29 +0000
+++ lisp/avoid.el 2014-05-08 20:39:59 +0000
@@ -343,7 +343,8 @@ (defun mouse-avoidance-ignore-p ()
(let ((modifiers (event-modifiers (car last-input-event))))
(or (memq (car last-input-event)
'(mouse-movement scroll-bar-movement
- select-window switch-frame))
+ select-window switch-frame
+ focus-in focus-out))
(memq 'click modifiers)
(memq 'double modifiers)
(memq 'triple modifiers)
PS: it seems there are other places that check only for `switch-frame',
and not for new event types `focus-in' and `focus-out'. But maybe
this problem occurs only in `run-with-idle-timer' because switching out
doesn't emit the event on its own, i.e. `read-event' doesn't return it.
This bug report was last modified 11 years and 22 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.