fix(macos::app_state): fix unwanted deviation when drag around monitor boundaries (#923)

This commit is contained in:
Golden Water
2024-05-07 08:33:14 +08:00
committed by GitHub
parent f06843be44
commit 2d6ad2ded6
2 changed files with 12 additions and 6 deletions

View File

@@ -0,0 +1,5 @@
---
"tao": patch
---
Fix unwanted deviation when dragging window around monitor boundaries on macOS.

View File

@@ -226,21 +226,22 @@ impl Handler {
scale_factor: f64,
) {
let mut size = suggested_size.to_physical(scale_factor);
let new_inner_size = &mut size;
let old_size = size.clone();
let event = Event::WindowEvent {
window_id: WindowId(get_window_id(*ns_window)),
event: WindowEvent::ScaleFactorChanged {
scale_factor,
new_inner_size,
new_inner_size: &mut size,
},
};
callback.handle_nonuser_event(event, &mut *self.control_flow.lock().unwrap());
let physical_size = *new_inner_size;
let logical_size = physical_size.to_logical(scale_factor);
let size = NSSize::new(logical_size.width, logical_size.height);
unsafe { NSWindow::setContentSize_(*ns_window, size) };
if old_size != size {
let logical_size = size.to_logical(scale_factor);
let size = NSSize::new(logical_size.width, logical_size.height);
unsafe { NSWindow::setContentSize_(*ns_window, size) };
}
}
fn handle_proxy(&self, proxy: EventProxy, callback: &mut Box<dyn EventHandler + 'static>) {