Skip to content

Commit be2391a

Browse files
committed
gdk4-macos: manually implement native_window method
For now we need to depend on the cocoa crate in order to implement this method since it is the only decent crate implementing the cocoa api.
1 parent 3a99628 commit be2391a

File tree

6 files changed

+153
-10
lines changed

6 files changed

+153
-10
lines changed

Cargo.lock

Lines changed: 116 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gdk4-macos/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ gdk.workspace = true
2222
gio.workspace = true
2323
glib.workspace = true
2424
libc.workspace = true
25+
cocoa = "0.26"
2526

2627
[dev-dependencies]
2728
gir-format-check.workspace = true

gdk4-macos/Gir.toml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ generate = [
1717
"GdkMacos.MacosGLContext",
1818
"GdkMacos.MacosKeymap",
1919
"GdkMacos.MacosSeat",
20-
"GdkMacos.MacosSurface",
2120
]
2221

2322
manual = [
@@ -36,4 +35,11 @@ name = "GdkMacos.MacosMonitor"
3635
status = "generate"
3736
[[object.function]]
3837
name = "get_geometry"
39-
ignore = true # The function does not exists
38+
ignore = true # The function does not exists
39+
40+
[[object]]
41+
name = "GdkMacos.MacosSurface"
42+
status = "generate"
43+
[[object.function]]
44+
name = "get_native_window"
45+
manual = true

gdk4-macos/src/auto/macos_surface.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,6 @@ glib::wrapper! {
2020
}
2121

2222
impl MacosSurface {
23-
//#[cfg(feature = "v4_8")]
24-
//#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
25-
//#[doc(alias = "gdk_macos_surface_get_native_window")]
26-
//#[doc(alias = "get_native_window")]
27-
//pub fn native_window(&self) -> /*Unimplemented*/Option<Basic: Pointer> {
28-
// unsafe { TODO: call ffi:gdk_macos_surface_get_native_window() }
29-
//}
30-
3123
//pub fn native(&self) -> /*Unimplemented*/Basic: Pointer {
3224
// ObjectExt::property(self, "native")
3325
//}

gdk4-macos/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@ mod auto;
1616
pub mod prelude;
1717

1818
pub use auto::*;
19+
20+
mod macos_surface;

gdk4-macos/src/macos_surface.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Take a look at the license at the top of the repository in the LICENSE file.
2+
3+
#[cfg(feature = "v4_8")]
4+
use crate::ffi;
5+
use crate::MacosSurface;
6+
#[cfg(feature = "v4_8")]
7+
use cocoa::base::id;
8+
#[cfg(feature = "v4_8")]
9+
use glib::translate::*;
10+
11+
impl MacosSurface {
12+
#[cfg(feature = "v4_8")]
13+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
14+
#[doc(alias = "gdk_macos_surface_get_native_window")]
15+
#[doc(alias = "get_native_window")]
16+
pub fn native_window(&self) -> Option<id> {
17+
unsafe {
18+
let native_window_ptr = ffi::gdk_macos_surface_get_native_window(self.to_glib_none().0);
19+
if native_window_ptr.is_null() {
20+
None
21+
} else {
22+
Some(native_window_ptr as id)
23+
}
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)