Subject: bug#26104: 26.0.50; In Ubuntu, having mouse over other frame cause Alt key to produce a <switch-frame> event

From: Jonathan Ganc <[email-masked]>
Date: Fri, 17 Mar 2017 21:04:57 -0400

Hi.

That does fix the problem for yank-pop, but I don't think it's a good 
fix. For example, it let's someone use yank-pop without having used yank 
if they use handle-switch-frame before. Also, the same issue happens 
with other commands like dabbrev-expand, which relies on checking what 
the previous command was.

What is the purpose of executing `handle-switch-frame` at all? Maybe 
there's some way of excluding it from last-command. But again, I don't 
really understand x-windows well or why that command is being sent.

Jonathan

On 03/17/2017 03:19 AM, martin rudalics wrote:
> > In Ubuntu, if I have two frames open and the mouse is positioned 
> over the other frame (i.e. not over the active one), pressing the Alt 
> key produces a <switch-frame> event.
> >
> > While this event does nothing in itself, it disrupts things like 
> yank-pop, which no longer works if it is bound to M-y as usual 
> (because instead of the command sequence yank -> yank-pop, we now have 
> yank -> handle-switch-frame -> yank-pop, which gives an error 
> "user-error: Previous command was not a yank").
> >
> > To be honest, I don't know enough about X-Windows to know if this is 
> emacs' fault or x-windows fault. But it's very annoying.
> >
> > [Tried on Emacs versions 24.5, 25.1, and the 26.0 and Ubuntu 16.10.]
>
> Could you try in simple.el to replace
>
>   (if (not (eq last-command 'yank))
>       (user-error "Previous command was not a yank"))
>
> with
>
>   (if (not (memq last-command '(yank handle-switch-frame)))
>       (user-error "Previous command was not a yank"))
>
> Thanks, martin