From 2eaa9de9da45cb009b72c2cb2403cd78d0e3e096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Fri, 23 Sep 2016 17:18:21 +0800 Subject: [PATCH] wayland/xdg-shell: Scale configure relative popup coordinate The parent local popup coordinate needs to be scaled according to the monitor scale it is assigned. https://bugzilla.gnome.org/show_bug.cgi?id=771841 --- src/wayland/meta-wayland-xdg-shell.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/wayland/meta-wayland-xdg-shell.c b/src/wayland/meta-wayland-xdg-shell.c index 591a1ed6c..b1b377173 100644 --- a/src/wayland/meta-wayland-xdg-shell.c +++ b/src/wayland/meta-wayland-xdg-shell.c @@ -873,6 +873,7 @@ xdg_popup_role_configure (MetaWaylandSurfaceRoleShellSurface *shell_surface_role MetaWaylandXdgPopup *xdg_popup = META_WAYLAND_XDG_POPUP (shell_surface_role); MetaWaylandXdgSurface *xdg_surface = META_WAYLAND_XDG_SURFACE (xdg_popup); MetaWindow *parent_window = xdg_popup->parent_surface->window; + int monitor_scale; int x, y; /* If the parent surface was destroyed, its window will be destroyed @@ -886,8 +887,9 @@ xdg_popup_role_configure (MetaWaylandSurfaceRoleShellSurface *shell_surface_role if (!parent_window) return; - x = new_x - parent_window->rect.x; - y = new_y - parent_window->rect.y; + monitor_scale = meta_window_wayland_get_main_monitor_scale (parent_window); + x = (new_x - parent_window->rect.x) / monitor_scale; + y = (new_y - parent_window->rect.y) / monitor_scale; zxdg_popup_v6_send_configure (xdg_popup->resource, x, y, new_width, new_height); meta_wayland_xdg_surface_send_configure (xdg_surface);