bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#17439: 24.3.50; run-with-idle-timer runs on focus-out


From: Juri Linkov
Subject: bug#17439: 24.3.50; run-with-idle-timer runs on focus-out
Date: Mon, 12 May 2014 00:31:48 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu)

>> +    (unless (and (consp last-input-event)
>> +             (symbolp (car last-input-event))
>> +             (memq (car last-input-event)
>
> Aka (unless (memq (car-safe last-input-event)

This is what I thought about, but decided to keep
code consistency with `mouse-avoidance-ignore-p'.
But `mouse-avoidance-ignore-p' could be optimized too.

>> +                   '(
>> +                     ;; `run-with-idle-timer' generates the `focus-out'
>
> Huh?  `run-with-idle-timer' is not supposed to generate any event.

It runs on `focus-out', as this short test demonstrates:

(defun test () (message "%S" last-input-event))
(setq timer (run-with-idle-timer 0.1 t 'test))

It generates:

(focus-in #<frame emacs@localhost 0x1121908>)
(focus-out #<frame emacs@localhost 0x1121908>)

>> +                     ;; event on switching out from the current frame,
>> +                     ;; but `raise-frame' brings the same frame back,
>> +                     ;; so ignore `focus-out' here.
>> +                     focus-out
>
> Running mouse avoidance after focus-out does not seem very useful, so we
> should filter out focus-out elsewhere than here.

I'll move `focus-out' back to `mouse-avoidance-ignore-p'
to not move the mouse pointer on `focus-out'.

>> +                     ;; Some window managers generate the `focus-in' event
>> +                     ;; when showing the Window List,
>
> What means "showing the Window List"?

It depends on the desktop environment, but usually this is a list of windows
shown after typing Alt-Tab.

>> +                     ;;  but `raise-frame' forcibly switches to an Emacs 
>> frame when the Window List is active,
>
> I don't know what this is talking about either.

This is specific behavior observed at least in one window manager (Gnome 2),
where typing Alt-Tab shows the Window List and generates the `focus-in' event
in Emacs at the same time.

>> +                     ;; so `focus-in' needs to be ignored here too.
>
> Shouldn't `switch-frame' be ignored for similar reasons, then?

Currently `switch-frame' is ignored in `mouse-avoidance-ignore-p',
so the mouse pointer is not moved when `switch-frame' is generated
in a new frame after switching between Emacs frames.

But maybe it should be handled like `focus-in', i.e. also
to not ignore it in `mouse-avoidance-ignore-p' and to move
the mouse pointer after switching between Emacs frames.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]