From 042667c5ebe4518ae2654f2f948f73c174145dcf Mon Sep 17 00:00:00 2001 From: Golden Water <2439577268@qq.com> Date: Fri, 24 May 2024 00:40:07 +0800 Subject: [PATCH] Resize when size changes on scale change on macOS This fixes an issue where the window glitched due to resize when the user doesn't actually change the window, but macOS function to update window size was still called. --- src/changelog/unreleased.md | 1 + src/platform_impl/macos/app_delegate.rs | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/changelog/unreleased.md b/src/changelog/unreleased.md index 2385ab8a15..889130e970 100644 --- a/src/changelog/unreleased.md +++ b/src/changelog/unreleased.md @@ -47,3 +47,4 @@ changelog entry. ### Fixed - On macOS, fix panic on exit when dropping windows outside the event loop. +- On macOS, fix window dragging glitches when dragging across a monitor boundary with different scale factor. diff --git a/src/platform_impl/macos/app_delegate.rs b/src/platform_impl/macos/app_delegate.rs index 984f4d099e..ca0d08ae1d 100644 --- a/src/platform_impl/macos/app_delegate.rs +++ b/src/platform_impl/macos/app_delegate.rs @@ -375,9 +375,11 @@ impl ApplicationDelegate { let physical_size = *new_inner_size.lock().unwrap(); drop(new_inner_size); - let logical_size = physical_size.to_logical(scale_factor); - let size = NSSize::new(logical_size.width, logical_size.height); - window.setContentSize(size); + if physical_size != suggested_size { + let logical_size = physical_size.to_logical(scale_factor); + let size = NSSize::new(logical_size.width, logical_size.height); + window.setContentSize(size); + } let resized_event = Event::WindowEvent { window_id: RootWindowId(window.id()),