Chris Lalancette wrote: > Daniel P. Berrange wrote: > >> I struggle to understand how/what you managed todo here. If the keyboard >> grab is active nothing should be able to steal keyboard input focus, since >> this is the whole point of keyboard grab. If something did manage to steal >> keyboard input while grab was active, then this is a bug in the window >> manager and not something we should hack in virt-viewer - inded if this >> is possible, then every single app which uses grabs needs your patch which >> is clearly non-scalable >> > > This arguably is some sort of window manager bug, or possibly a bug in the way > keyboard grab is currently working. In any case, it is very easy to reproduce. > Just do something like: > > # virt-viewer guest1 & sleep 10 ; virt-viewer guest2 > > And make sure to click inside the guest1 virt-viewer window right after it pops > up. Assuming your keyboard is grabbed there, and that your window manager > placed the guest2 window on top of the guest1 window, you will be unable to > escape (with Ctrl-Alt) from the guest1 window. > > Chris Lalancette > > It is not a Window Manager bug, it is a virt-viewer bug. The Window Manager is not responsible for releasing keyboard or pointer grabs when a window looses focus. It is the applications job. Take a look at xorg/xc/Xserver/dix/event.c: ProcUngrabPointer(ClientPtr client) This function checks that the releasing client is the client that owns the grab. This behavior makes sense, would be a huge security hole otherwise. Not sure this will apply cleanly but I would suggest something like below to gtk-vnc/vncdisplay.c: --- vncdisplay.c.orig 2008-05-20 13:32:24.000000000 -0600 +++ vncdisplay.c 2008-05-20 13:33:22.000000000 -0600 @@ -492,6 +492,9 @@ static gboolean leave_event(GtkWidget *w if (priv->grab_keyboard) do_keyboard_ungrab(VNC_DISPLAY(widget), FALSE); + if (priv->grab_pointer) + do_pointer_ungrab(VNC_DISPLAY(widget), FALSE); + return TRUE; } _______________________________________________ et-mgmt-tools mailing list et-mgmt-tools@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/et-mgmt-tools