From e3406ac2556c7f68cd00f11b5856222dcce7f680 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 29 May 2024 13:32:11 +0300 Subject: Signal fractional scale to clients Doesn't do anything yet because we don't bind the fractional scale manager and don't allow fractional scales. --- src/utils/mod.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/utils/mod.rs') diff --git a/src/utils/mod.rs b/src/utils/mod.rs index f523d960..7d41b923 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -12,10 +12,13 @@ use directories::UserDirs; use git_version::git_version; use niri_config::Config; use smithay::input::pointer::CursorIcon; -use smithay::output::Output; +use smithay::output::{self, Output}; use smithay::reexports::rustix::time::{clock_gettime, ClockId}; use smithay::reexports::wayland_protocols::xdg::shell::server::xdg_toplevel; +use smithay::reexports::wayland_server::protocol::wl_surface::WlSurface; use smithay::utils::{Logical, Point, Rectangle, Size, Transform}; +use smithay::wayland::compositor::{send_surface_state, SurfaceData}; +use smithay::wayland::fractional_scale::with_fractional_scale; pub mod id; pub mod scale; @@ -133,6 +136,18 @@ pub fn ipc_transform_to_smithay(transform: niri_ipc::Transform) -> Transform { } } +pub fn send_scale_transform( + surface: &WlSurface, + data: &SurfaceData, + scale: output::Scale, + transform: Transform, +) { + send_surface_state(surface, data, scale.integer_scale(), transform); + with_fractional_scale(data, |fractional| { + fractional.set_preferred_scale(scale.fractional_scale()); + }); +} + pub fn expand_home(path: &Path) -> anyhow::Result> { if let Ok(rest) = path.strip_prefix("~") { let dirs = UserDirs::new().context("error retrieving home directory")?; -- cgit