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: Daniel P . Berrangé
Subject: Re: [PATCH v2] ui/gtk: fix cursor moved to left corner
Date: Mon, 20 Mar 2023 13:32:42 +0000
User-agent: Mutt/2.2.9 (2022-11-12)

On Mon, Mar 20, 2023 at 05:26:24PM +0400, marcandre.lureau@redhat.com wrote:
> 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

Ah, this assertion means that gdk_window_get_root_coords returns
control without setting x_root and y_root. So they contain
whatever garbage is on the stack. They could end up pointing anywhere,
and because max value of an 'int' is way larger than the screen size
they'll usually get capped at the sceen size and thus end up bottom
right corner.

> 
> Fixes: 6effaa16ac98 ("ui: set cursor position upon listener
> registration")
> 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(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


> 
> 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;
>      }
>  
> -- 
> 2.39.2
> 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




reply via email to

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