From 4a76f66a543fdfa739f2f1b0da5b465b3e3f253d Mon Sep 17 00:00:00 2001 From: Xiang Fan Date: Sat, 2 Nov 2019 15:05:57 -0400 Subject: [PATCH] wayland/surface: Don't double scale when getting absolute coordinates The actor is already in surface coordinate space, so we should not scale with the buffer scale to transform surface coordinates to stage coordinates. This bug causes input method using wayland text-input protocol to receive wrong cursor location. Reproduced in ibus (when candidate window is open) with scaling factor other than 1. This commit also fixes pointer confinement. https://gitlab.gnome.org/GNOME/mutter/merge_requests/915 --- src/wayland/meta-wayland-surface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index 5918e38d5..d49572a21 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -1647,8 +1647,8 @@ meta_wayland_surface_get_absolute_coordinates (MetaWaylandSurface *surface, ClutterActor *actor = CLUTTER_ACTOR (meta_wayland_surface_get_actor (surface)); graphene_point3d_t sv = { - .x = sx * surface->scale, - .y = sy * surface->scale, + .x = sx, + .y = sy, }; graphene_point3d_t v = { 0 };