From e108fa2fbf41bf00316916f622a9a789315a3ee4 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 9350bb2f1f..dd7e00b815 100644 --- a/src/changelog/unreleased.md +++ b/src/changelog/unreleased.md @@ -53,3 +53,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()),