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

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

bug#24803: Redirection problem with separate minibuffer frame


From: martin rudalics
Subject: bug#24803: Redirection problem with separate minibuffer frame
Date: Thu, 27 Oct 2016 19:35:18 +0200

> I'm seeing redirection problems in my Emacs setup (with separate
> minibuffer-only frame).  I suspect it comes from
>
>      commit 421c0512f76683e0b85ea5e1362291c2da4149ba
>      Author: Martin Rudalics <address@hidden>
>      Date:   Mon Oct 17 10:52:01 2016 +0200
>
>        Fix frame focus redirection with shared minibuffer windows (Bug#24500)
>
>        * src/frame.c (do_switch_frame): Redirect frame focus also when
>        the frame switched to has its minibuffer window on the selected
>        frame.
>        * src/window.c (candidate_window_p): To qualify as candidate
>        it's not sufficient for the window's frame to just share the
>        minibuffer window - it must be active as well.

Please revert the frame.c change so we can be sure which of the two is
the real culprit.

> I just managed to reliably reproduce one of the symptoms of the problem:
>
>      % emacs -Q --eval "(setq default-frame-alist '((minibuffer)))"
>      ... place the minibuffer frame so that half of it covers the main frame 
...
>      ... now from the minibuffer frame, do
>      C-h f car RET
>
> at this point, the stacking order has been changed: the main frame is above
> the minibuffer-only frame.  Then I move the mouse into the part of the
> minibuffer frame still visible and I type
>
>      ffff
>
> The first `f` should call `find-file` (according to
> minibuffer-inactive-mode-map), but instead the `ffff` text gets inserted
> into the *scratch* buffer because of some inappropriate focus redirection.
> [ This recipe depends on using a window-manager with
>    focus-follows-mouse and it might also depend on other aspects of the
>    window manager's behavior.  ]

Works as intended on both Windows XP and a GTK+ build with XFCE on
Debian.  I use focus-follows-mouse plus auto-raise-frame though the
minibuffer does _not_ get autoraised when moving the mouse there.
Actually, that's what I would call a misbehavior here ;-)

> +      if (!NILP (FRAME_FOCUS_FRAME (XFRAME (frame)))
> +          && !EQ (FRAME_FOCUS_FRAME (XFRAME (frame)), frame))
[...]
> +  if (minibuf_level == 0)

Hmm... This seems to indicate that I do not remove the redirection when
exiting the minibuffer.  Could you try to augment in read_minibuf_unwind

  if (minibuf_level == 0)
    resize_mini_window (XWINDOW (window), 0);

to something that for each frame redirects focus to itself?  Obviously,
this might fail with recursive minibuffer invocations from two different
frames ...

martin





reply via email to

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