From c71b14afb9709aef36477a3eab0a816a3f972cd8 Mon Sep 17 00:00:00 2001
From: Johan Sköld <johan@skold.cc>
Date: Sat, 16 Jan 2016 15:12:21 -0800
Subject: Adding os::macos.

Also implements platform_window() for cocoa.
---
 src/api/cocoa/mod.rs |  2 +-
 src/os/macos.rs      | 19 +++++++++++++++++++
 src/os/mod.rs        |  2 ++
 3 files changed, 22 insertions(+), 1 deletion(-)
 create mode 100644 src/os/macos.rs

(limited to 'src')

diff --git a/src/api/cocoa/mod.rs b/src/api/cocoa/mod.rs
index a720a51..2fc1baf 100644
--- a/src/api/cocoa/mod.rs
+++ b/src/api/cocoa/mod.rs
@@ -690,7 +690,7 @@ impl Window {
 
     #[inline]
     pub fn platform_window(&self) -> *mut libc::c_void {
-        unimplemented!()
+        *self.window as *mut libc::c_void
     }
 
     #[inline]
diff --git a/src/os/macos.rs b/src/os/macos.rs
new file mode 100644
index 0000000..16ffe33
--- /dev/null
+++ b/src/os/macos.rs
@@ -0,0 +1,19 @@
+#![cfg(target_os = "macos")]
+
+use std::os::raw::c_void;
+use Window;
+
+/// Additional methods on `Window` that are specific to MacOS.
+pub trait WindowExt {
+    /// Returns a pointer to the cocoa `NSWindow` that is used by this window.
+    ///
+    /// The pointer will become invalid when the glutin `Window` is destroyed.
+    fn get_nswindow(&self) -> *mut c_void;
+}
+
+impl WindowExt for Window {
+    #[inline]
+    fn get_nswindow(&self) -> *mut c_void {
+        self.window.platform_window() as *mut c_void
+    }
+}
diff --git a/src/os/mod.rs b/src/os/mod.rs
index 251a8d4..04e82c2 100644
--- a/src/os/mod.rs
+++ b/src/os/mod.rs
@@ -2,8 +2,10 @@
 //!
 //! Contains the follow modules:
 //!
+//!  - `macos`
 //!  - `unix`
 //!  - `windows`
 //!
+pub mod macos;
 pub mod unix;
 pub mod windows;
-- 
cgit v1.2.3