From 536bd32efc935bf876d6de385ec18a1b715c9358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=81=E9=93=81=E5=BC=80=E5=8F=91=E9=83=A8=EF=BC=88MDD?= =?UTF-8?q?=EF=BC=89?= <128666602+MSCMDD@users.noreply.github.com> Date: Mon, 16 Feb 2026 06:52:49 +0800 Subject: [PATCH] fix: Round up the width under HIDPI (#374) --- src/server/event.rs | 4 ++-- src/server/tests.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/event.rs b/src/server/event.rs index ea2277c..ba31797 100644 --- a/src/server/event.rs +++ b/src/server/event.rs @@ -472,8 +472,8 @@ pub(super) fn update_surface_viewport( let dims = &window_data.attrs.dims; let size_hints = &window_data.attrs.size_hints; - let width = (dims.width as f64 / scale_factor.0) as i32; - let height = (dims.height as f64 / scale_factor.0) as i32; + let width = (dims.width as f64 / scale_factor.0).ceil() as i32; + let height = (dims.height as f64 / scale_factor.0).ceil() as i32; if width > 0 && height > 0 { viewport.set_destination(width, height); } diff --git a/src/server/tests.rs b/src/server/tests.rs index 68495d0..13492cd 100644 --- a/src/server/tests.rs +++ b/src/server/tests.rs @@ -2300,8 +2300,8 @@ fn fractional_scale_small_popup() { { let data = f.testwl.get_surface_data(toplevel_id).unwrap(); let viewport = data.viewport.as_ref().expect("Missing viewport"); - assert_eq!(viewport.width, 66); - assert_eq!(viewport.height, 66); + assert_eq!(viewport.width, 67); + assert_eq!(viewport.height, 67); } let popup = Window::new(2);