qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 1/2] ui/gtk: use widget size for cursor motion event


From: Erico Nunes
Subject: Re: [PATCH 1/2] ui/gtk: use widget size for cursor motion event
Date: Wed, 22 Mar 2023 17:10:19 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0

Hi Vivek,

On 21/03/2023 04:29, Kasireddy, Vivek wrote:
> Hi Erico,
> 
>>
>> The gd_motion_event size has some calculations for the cursor position,
>> which also take into account things like different size of the
>> framebuffer compared to the window size.
>> The use of window size makes things more difficult though, as at least
>> in the case of Wayland includes the size of ui elements like a menu bar
>> at the top of the window. This leads to a wrong position calculation by
>> a few pixels.
>> Fix it by using the size of the widget, which already returns the size
>> of the actual space to render the framebuffer.
>>
>> Signed-off-by: Erico Nunes <ernunes@redhat.com>
>> ---
>>  ui/gtk.c | 8 +++-----
>>  1 file changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/ui/gtk.c b/ui/gtk.c
>> index fd82e9b1ca..d1b2a80c2b 100644
>> --- a/ui/gtk.c
>> +++ b/ui/gtk.c
>> @@ -868,7 +868,6 @@ static gboolean gd_motion_event(GtkWidget *widget,
>> GdkEventMotion *motion,
>>  {
>>      VirtualConsole *vc = opaque;
>>      GtkDisplayState *s = vc->s;
>> -    GdkWindow *window;
>>      int x, y;
>>      int mx, my;
>>      int fbh, fbw;
>> @@ -881,10 +880,9 @@ static gboolean gd_motion_event(GtkWidget *widget,
>> GdkEventMotion *motion,
>>      fbw = surface_width(vc->gfx.ds) * vc->gfx.scale_x;
>>      fbh = surface_height(vc->gfx.ds) * vc->gfx.scale_y;
>>
>> -    window = gtk_widget_get_window(vc->gfx.drawing_area);
>> -    ww = gdk_window_get_width(window);
>> -    wh = gdk_window_get_height(window);
>> -    ws = gdk_window_get_scale_factor(window);
>> +    ww = gtk_widget_get_allocated_width(widget);
>> +    wh = gtk_widget_get_allocated_height(widget);
> [Kasireddy, Vivek] Could you please confirm if this works in X-based 
> compositor
> environments as well? Last time I checked (with Fedora 36 and Gnome + X), the
> get_allocated_xxx APIs were not accurate in X-based environments. Therefore,
> I restricted the above change to Wayland-based environments only:
> https://lists.nongnu.org/archive/html/qemu-devel/2022-11/msg03100.html

Yes, I tested again and it seems to work fine for me even with the gtk
ui running on X. I'm using Fedora 37.

I was not aware of that patch series though and just spent some time
debugging these ui issues. It looks like your series was missed?

I'm still debugging additional issues with cursor position calculation,
especially in wayland environments (and in particular with
vhost-user-gpu now). Do those patches address more cursor issues?

Thank you

Erico




reply via email to

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