xwayland: Transform pointer enter event coordinates
Pointer enter event coordinates are surface relative and we need them to be screen relative for pScreen->SetCursorPosition(). https://bugzilla.gnome.org/show_bug.cgi?id=758283 Signed-off-by: Rui Matos <tiagomatos@gmail.com> Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
		
							parent
							
								
									f5c6d751d0
								
							
						
					
					
						commit
						f68ba7b81f
					
				| 
						 | 
				
			
			@ -298,6 +298,7 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer,
 | 
			
		|||
    int i;
 | 
			
		||||
    int sx = wl_fixed_to_int(sx_w);
 | 
			
		||||
    int sy = wl_fixed_to_int(sy_w);
 | 
			
		||||
    int dx, dy;
 | 
			
		||||
    ScreenPtr pScreen = xwl_seat->xwl_screen->screen;
 | 
			
		||||
    ValuatorMask mask;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -314,9 +315,11 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer,
 | 
			
		|||
    xwl_seat->pointer_enter_serial = serial;
 | 
			
		||||
 | 
			
		||||
    xwl_seat->focus_window = wl_surface_get_user_data(surface);
 | 
			
		||||
    dx = xwl_seat->focus_window->window->drawable.x;
 | 
			
		||||
    dy = xwl_seat->focus_window->window->drawable.y;
 | 
			
		||||
 | 
			
		||||
    master = GetMaster(dev, POINTER_OR_FLOAT);
 | 
			
		||||
    (*pScreen->SetCursorPosition) (dev, pScreen, sx, sy, TRUE);
 | 
			
		||||
    (*pScreen->SetCursorPosition) (dev, pScreen, dx + sx, dy + sy, TRUE);
 | 
			
		||||
 | 
			
		||||
    miPointerInvalidateSprite(master);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue