diff --git a/wayland.c b/wayland.c index aa1b298c..bf8f2682 100644 --- a/wayland.c +++ b/wayland.c @@ -1529,6 +1529,7 @@ static void fractional_scale_preferred_scale( { struct wl_window *win = data; win->scale = (float)scale / 120.; + win->have_preferred_scale = true; LOG_DBG("fractional scale: %.3f", win->scale); update_term_for_output_change(win->term); @@ -1895,7 +1896,7 @@ wayl_surface_scale_explicit_width_height( int width, int height, float scale) { - if (wayl_fractional_scaling(wayl)) { + if (wayl_fractional_scaling(win->term->wl) && win->have_preferred_scale) { #if defined(HAVE_FRACTIONAL_SCALE) LOG_DBG("scaling by a factor of %.2f (fractional scaling)", scale); wp_viewport_set_destination( diff --git a/wayland.h b/wayland.h index 7305ade7..e2d22031 100644 --- a/wayland.h +++ b/wayland.h @@ -346,6 +346,7 @@ struct wl_window { bool unmapped; float scale; + bool have_preferred_scale; struct zxdg_toplevel_decoration_v1 *xdg_toplevel_decoration;