Subject: bug#11566: 24.0.97; `read-from-minibuffer': focus to standalone minibuffer frame?

From: "Drew Adams" <[email-masked]>
Date: Tue, 29 May 2012 07:12:26 -0700

> You didn't tell us whether it works for you "in general".  If you work
> with two frames for "some time" does `redirect-frame-focus' what it is
> supposed to do?  If it doesn't we have a strange situation 
> where, citing from Ito's comment in bug#11513,

Sorry, I don't know what you mean.  I have been using multiple frames for a long
time, yes.  But I do not directly call `redirect-frame-focus'.  I do call
`select-frame-set-input-focus' in various places.

Does that mean that `r-f-f' works for me in general?  I really have no idea.

>  > > When I run lower-frame function in Emacs frame 
>  > > interactively, Emacs frame is brought behind of
>  > > other application window(s) but has focus.
>  > > Key inputs are passed to lowered frame.  I tested 4 
>  > > Windows PC, and all PCs show the same behavior.

Yes, I was the first to confirm what was reported in bug #11513.

> so Windows OT1H handles key input passed to a frame that is not in the
> foreground and OTOH doesn't pass key input to another frame even if
> explicitly asked to do so.

Apparently so.

(That a window manager can accept input passed to a frame that is not on top in
the stacking order is not exceptional.  That is (was, at least) true for many w.
mgrs on UNIX, where you could even change the input focus without changing the
stacking order ("foreground") just by moving the mouse over a lower frame.)

>  >> Try the sit-for approach.  Try to make a standalone example like
>  >> (let ((old-frame ... some existing frame))
>  >>    (make-frame)
>  >>    (redirect-frame-focus old-frame))
>  >> and see whether it fails giving focus to `old-frame'.
>  >
>  > Still not sure what you mean by using `sit-for' 
>  > (how/where?).  But I tried that simple example, and yes,
>  > it systematically fails to give focus to `old-frame'.
>  > The newly created frame keeps the focus - every time.
> 
> I suppose my example was just silly.  Maybe you should try again with
> 
> (let ((old-frame (selected-frame))
>        (new-frame (make-frame)))
>    (redirect-frame-focus new-frame old-frame))

That puts (keeps) the input focus in old-frame.  So it seems to work as it
should.

(But new-frame has its title and border highlighted as if it had the focus.
Somehow there is a disconnect between the two.  But maybe such highlighting is
intended only to indicate the topmost frame?  Dunno.)

> I don't know anything about `redirect-frame-focus' and can't test it
> reliably here because I'm using special autoraise-frame settings which
> likely interfere with any such focus redirection.

I know less that you, but I can perhaps test it if you suggest what to test.