qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v2] ui/gtk: fix cursor moved to left corner


From: Bernhard Beschow
Subject: Re: [PATCH v2] ui/gtk: fix cursor moved to left corner
Date: Mon, 20 Mar 2023 22:39:53 +0000


Am 20. März 2023 13:26:24 UTC schrieb marcandre.lureau@redhat.com:
>From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
>Do not attempt to move the pointer if the widget is not yet realized.
>The mouse cursor is placed to the corner of the screen, on X11 at least,
>as x_root and y_root are then miscalculated. (this is not reproducible
>on Wayland, because Gtk doesn't implement device warping there)
>
>This also fixes the following warning at start:
>qemu: Gdk: gdk_window_get_root_coords: assertion 'GDK_IS_WINDOW (window)' 
>failed
>
>Fixes: 6effaa16ac98 ("ui: set cursor position upon listener
>registration")

This particular issue gets fixed, so:
Tested-by: Bernhard Beschow <shentey@gmail.com>

However, when I perform a test like in 
https://gitlab.com/qemu-project/qemu/-/issues/1550 , the cursor gets placed 
into the QEMU window once the graphical environment is entered *in the guest*, 
regardless of whether QEMU has the focus or not. This seems quite strange 
because an application shouldn't "steal" the mouse from the active application. 
So perhaps this fix is just scratching the surface of a deeper underlying bug...

Best regards,
Bernhard

>Reported-by: Bernhard Beschow <shentey@gmail.com>
>Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>---
> ui/gtk.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
>diff --git a/ui/gtk.c b/ui/gtk.c
>index fd82e9b1ca..e9564f2baa 100644
>--- a/ui/gtk.c
>+++ b/ui/gtk.c
>@@ -450,7 +450,8 @@ static void gd_mouse_set(DisplayChangeListener *dcl,
>     GdkDisplay *dpy;
>     gint x_root, y_root;
> 
>-    if (qemu_input_is_absolute()) {
>+    if (!gtk_widget_get_realized(vc->gfx.drawing_area) ||
>+        qemu_input_is_absolute()) {
>         return;
>     }
> 



reply via email to

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