[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#61319: 30.0.50; 'M-x select-frame-by-name' --with-pgtk does not swit
From: |
Po Lu |
Subject: |
bug#61319: 30.0.50; 'M-x select-frame-by-name' --with-pgtk does not switch focused frame |
Date: |
Mon, 06 Feb 2023 21:40:59 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Eli Zaretskii <eliz@gnu.org> writes:
>> Cc: Joseph Ferano <joseph@ferano.io>
>> From: Protesilaos Stavrou <info@protesilaos.com>
>> Date: Mon, 06 Feb 2023 12:52:35 +0200
>>
>> When using Emacs PGTK, the command 'select-frame-by-name' does not
>> switch focus to the selected frame. Instead, it selects the buffer on
>> the specified frame, but keeps the current frame in focus.
>>
>> Steps to reproduce with 'emacs -Q':
>>
>> 1. In the scratch buffer, do 'M-x make-frame'
>> 2. In one of the two frames, switch to another buffer, such as "*Messages*".
>> 3. Do 'M-x select-frame-by-name' and select the other frame.
>
> You are saying that select-frame-set-input-focus doesn't move the
> input focus to the newly-selected frame? But that is only "best
> effort":
>
> select-frame-set-input-focus is a byte-compiled Lisp function in
> ‘frame.el’.
>
> (select-frame-set-input-focus FRAME &optional NORECORD)
>
> Select FRAME, raise it, and set input focus, if possible.
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Perhaps Po Lu could try fixing this, but in general Lisp programs and
> users should not rely on success in these cases, because the WM can
> actively prevent Emacs from giving the frame input focus.
The Wayland protocol itself prevents Emacs from doing this.
GTK 3 uses a private Wayland protocol extension named ``gtk-shell''
which is implemented only by GNOME's Wayland compositor; it does not
support the other extension typically used to activate toplevels.
Unless you're using GNOME Shell, I don't think we will be able to make
this work, sorry. If you do, however, it should already work. So
please tell us what Wayland compositor you are using.
Thanks.