Hi Marc-André,

> Subject: Re: [PATCH] ui/gtk: Fix focus loss on re-attachment with single VC
> 
> Hi
> 
> On Wed, May 20, 2026 at 4:33 AM <[email protected]> wrote:
> >
> > From: Dongwon Kim <[email protected]>
> >
> > When QEMU is launched with a single virtual console (e.g., using
> > --nodefaults), detaching and then closing the detached window leaves
> > the main window's notebook without an active focus target which makes
> > keyboard unfunctional on re-attached VC.
> >
> > Fix this by explicitly calling gtk_widget_grab_focus on the active
> > VC's focus widget during the window close handler.
> >
> > Cc: Marc-André Lureau <[email protected]>
> > Cc: Philippe Mathieu-Daudé <[email protected]>
> > Cc: Daniel P. Berrangé <[email protected]>
> > Signed-off-by: Dongwon Kim <[email protected]>
> > ---
> >  ui/gtk.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/ui/gtk.c b/ui/gtk.c
> > index 2c61b601f7..8eb1a80377 100644
> > --- a/ui/gtk.c
> > +++ b/ui/gtk.c
> > @@ -1475,6 +1475,11 @@ static gboolean
> gd_tab_window_close(GtkWidget *widget, GdkEvent *event,
> >          vc->gfx.ectx = NULL;
> >      }
> >  #endif
> > +
> > +    if (vc == gd_vc_find_by_menu(s)) {
> > +        gtk_widget_grab_focus(vc->focus);
> > +    }
> > +
> 
> Looks ok to me. But could you share your test case? launching qemu with just
> -nodefaults doesn't help reproduce your issue :)

Hmm, -nodefaults should be only thing needed. The point is to have just one VC 
created.
Please take a look at the video shared here:
https://drive.google.com/file/d/1O6K9GSWHFRFaxaTLcJKN_jYOPvOQPr7t/view?usp=sharing

The QEMU used in this demo is yesterday's master.

commit e89049b3ba5f1f0468bc0d294173345597514a1b (origin/staging, origin/master, 
origin/HEAD)
Merge: 992ca15de7 8b663f7d0d
Author: Stefan Hajnoczi <[email protected]>
Date:   Tue May 19 15:23:10 2026 -0400

    Merge tag 'for-upstream' of https://repo.or.cz/qemu/kevin into staging

And this is the QEMU launching command line.

qemu-system-x86_64 -nodefaults -machine q35 -m 2048 -enable-kvm -cpu host -smp 
cores=4,threads=2,sockets=1 -drive file=../OVMF.fd,format=raw,if=pflash -drive 
format=raw,if=pflash,if=virtio,file=/home/user/mnt/ubuntu-test/ubuntu-desktop-24.04-302-custom.img,cache=none
 -device pcie-root-port,id=root_port1,bus=pcie.0 -device 
vfio-pci,host=0000:00:02.1 -device e1000,netdev=net0,mac=DE:AD:BE:EF:BF:FA 
-netdev user,id=net0,hostfwd=tcp::1111-:22 -device 
virtio-vga,max_outputs=1,blob=true,bus=root_port1,x-pcie-pm-no-soft-reset=true 
-display gtk,gl=on,full-screen=off -object 
memory-backend-memfd,hugetlb=off,id=mem1,size=2048M -machine memory-backend=mem1

I am using Ubuntu 24.04LTS for both host and guest.

> 
> (fwiw, I have a bunch of patches pending to fix/improve dynamic console
> handling, I will try to send them later this week)

Sounds good!! Thanks
DW

> 
> thanks
> 
> --
> Marc-André Lureau

Reply via email to