From d36afd32d7bf31b862260738652994e8e6bd9ce4 Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Fri, 12 Apr 2024 13:22:17 +0200 Subject: [PATCH] wayland: Always use logical pixels for bounds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes that with scale-monitor-framebuffer disabled, windows were always configured with bounds using physical instead of logical pixels. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3269 Co-authored-by: Jonas Ã…dahl Part-of: --- src/wayland/meta-wayland-window-configuration.c | 5 +++-- src/wayland/meta-wayland-window-configuration.h | 3 ++- src/wayland/meta-wayland-xdg-shell.c | 6 +++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/wayland/meta-wayland-window-configuration.c b/src/wayland/meta-wayland-window-configuration.c index 4298d1eec..56fa77ad6 100644 --- a/src/wayland/meta-wayland-window-configuration.c +++ b/src/wayland/meta-wayland-window-configuration.c @@ -100,14 +100,15 @@ meta_wayland_window_configuration_new_relative (MetaWindow *window, MetaWaylandWindowConfiguration * meta_wayland_window_configuration_new_empty (int bounds_width, - int bounds_height) + int bounds_height, + int scale) { MetaWaylandWindowConfiguration *configuration; configuration = g_new0 (MetaWaylandWindowConfiguration, 1); *configuration = (MetaWaylandWindowConfiguration) { .serial = ++global_serial_counter, - .scale = 1, + .scale = scale, .bounds_width = bounds_width, .bounds_height = bounds_height, }; diff --git a/src/wayland/meta-wayland-window-configuration.h b/src/wayland/meta-wayland-window-configuration.h index 064e73ea1..fb26344bb 100644 --- a/src/wayland/meta-wayland-window-configuration.h +++ b/src/wayland/meta-wayland-window-configuration.h @@ -68,6 +68,7 @@ MetaWaylandWindowConfiguration * meta_wayland_window_configuration_new_relative int scale); MetaWaylandWindowConfiguration * meta_wayland_window_configuration_new_empty (int bounds_width, - int bounds_height); + int bounds_height, + int scale); void meta_wayland_window_configuration_free (MetaWaylandWindowConfiguration *configuration); diff --git a/src/wayland/meta-wayland-xdg-shell.c b/src/wayland/meta-wayland-xdg-shell.c index 28b39577b..ff1b7a11a 100644 --- a/src/wayland/meta-wayland-xdg-shell.c +++ b/src/wayland/meta-wayland-xdg-shell.c @@ -869,6 +869,9 @@ meta_wayland_xdg_toplevel_apply_state (MetaWaylandSurfaceRole *surface_role, MetaWaylandWindowConfiguration *configuration; int bounds_width; int bounds_height; + int geometry_scale; + + geometry_scale = meta_window_wayland_get_geometry_scale (window); if (!meta_window_calculate_bounds (window, &bounds_width, &bounds_height)) { @@ -878,7 +881,8 @@ meta_wayland_xdg_toplevel_apply_state (MetaWaylandSurfaceRole *surface_role, configuration = meta_wayland_window_configuration_new_empty (bounds_width, - bounds_height); + bounds_height, + geometry_scale); meta_wayland_xdg_toplevel_send_configure (xdg_toplevel, configuration); meta_wayland_window_configuration_free (configuration); return;