From 87cf8ac60efb623924e8cfed5d58c56216a379d3 Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Tue, 7 Feb 2023 15:26:03 -0800 Subject: [PATCH] Fixed strange y results from faulty conversion to screen coordinates co-authored-by: Nathan --- crates/gpui/src/platform/mac/geometry.rs | 6 +++--- crates/gpui/src/platform/mac/window.rs | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/crates/gpui/src/platform/mac/geometry.rs b/crates/gpui/src/platform/mac/geometry.rs index 9fce8846b7..6a47968118 100644 --- a/crates/gpui/src/platform/mac/geometry.rs +++ b/crates/gpui/src/platform/mac/geometry.rs @@ -14,12 +14,12 @@ use pathfinder_geometry::{ pub trait Vector2FExt { /// Converts self to an NSPoint with y axis pointing up. - fn to_screen_ns_point(&self, native_window: id) -> NSPoint; + fn to_screen_ns_point(&self, native_window: id, window_height: f64) -> NSPoint; } impl Vector2FExt for Vector2F { - fn to_screen_ns_point(&self, native_window: id) -> NSPoint { + fn to_screen_ns_point(&self, native_window: id, window_height: f64) -> NSPoint { unsafe { - let point = NSPoint::new(self.x() as f64, self.y() as f64); + let point = NSPoint::new(self.x() as f64, window_height - self.y() as f64); msg_send![native_window, convertPointToScreen: point] } } diff --git a/crates/gpui/src/platform/mac/window.rs b/crates/gpui/src/platform/mac/window.rs index 46e115a436..e67aa25e13 100644 --- a/crates/gpui/src/platform/mac/window.rs +++ b/crates/gpui/src/platform/mac/window.rs @@ -832,7 +832,10 @@ impl platform::Window for Window { let app = NSApplication::sharedApplication(nil); // Convert back to screen coordinates - let screen_point = position.to_screen_ns_point(self_borrow.native_window); + let screen_point = position.to_screen_ns_point( + self_borrow.native_window, + self_borrow.content_size().y() as f64, + ); let window_number: NSInteger = msg_send![class!(NSWindow), windowNumberAtPoint:screen_point belowWindowWithWindowNumber:0]; let top_most_window: id = msg_send![app, windowWithWindowNumber: window_number];