diff --git a/druid-shell/src/backend/mac/window.rs b/druid-shell/src/backend/mac/window.rs index 23f0f17ccd..f444ecaae2 100644 --- a/druid-shell/src/backend/mac/window.rs +++ b/druid-shell/src/backend/mac/window.rs @@ -290,6 +290,18 @@ impl WindowBuilder { let frame = NSView::frame(content_view); view.initWithFrame_(frame); + // The rect of the tracking area doesn't matter, because + // we use the InVisibleRect option where the OS syncs the size automatically. + let rect = NSRect::new(NSPoint::new(0., 0.), NSSize::new(0., 0.)); + let opts = NSTrackingAreaOptions::MouseEnteredAndExited + | NSTrackingAreaOptions::MouseMoved + | NSTrackingAreaOptions::ActiveAlways + | NSTrackingAreaOptions::InVisibleRect; + let tracking_area = NSTrackingArea::alloc(nil) + .initWithRect_options_owner_userInfo(rect, opts, view, nil) + .autorelease(); + view.addTrackingArea(tracking_area); + let () = msg_send![window, setDelegate: view]; if let Some(menu) = self.menu { @@ -578,18 +590,6 @@ fn make_view(handler: Box) -> (id, Weak>>) { let options: NSAutoresizingMaskOptions = NSViewWidthSizable | NSViewHeightSizable; view.setAutoresizingMask_(options); - // The rect of the tracking area doesn't matter, because - // we use the InVisibleRect option where the OS syncs the size automatically. - let rect = NSRect::new(NSPoint::new(0., 0.), NSSize::new(0., 0.)); - let opts = NSTrackingAreaOptions::MouseEnteredAndExited - | NSTrackingAreaOptions::MouseMoved - | NSTrackingAreaOptions::ActiveAlways - | NSTrackingAreaOptions::InVisibleRect; - let tracking_area = NSTrackingArea::alloc(nil) - .initWithRect_options_owner_userInfo(rect, opts, view, nil) - .autorelease(); - view.addTrackingArea(tracking_area); - (view.autorelease(), queue_handle) } }