vizia_baseview/
parent_window.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use raw_window_handle::{HasRawWindowHandle, RawWindowHandle};

pub struct ParentWindow(pub *mut ::std::ffi::c_void);

#[cfg(target_os = "macos")]
unsafe impl HasRawWindowHandle for ParentWindow {
    fn raw_window_handle(&self) -> RawWindowHandle {
        use raw_window_handle::AppKitWindowHandle;

        let mut handle = AppKitWindowHandle::empty();
        handle.ns_view = self.0;

        RawWindowHandle::AppKit(handle)
    }
}

#[cfg(target_os = "windows")]
unsafe impl HasRawWindowHandle for ParentWindow {
    fn raw_window_handle(&self) -> RawWindowHandle {
        use raw_window_handle::Win32WindowHandle;

        let mut handle = Win32WindowHandle::empty();
        handle.hwnd = self.0;

        RawWindowHandle::Win32(handle)
    }
}

#[cfg(target_os = "linux")]
unsafe impl HasRawWindowHandle for ParentWindow {
    fn raw_window_handle(&self) -> RawWindowHandle {
        use raw_window_handle::XcbWindowHandle;

        let mut handle = XcbWindowHandle::empty();
        handle.window = self.0 as u32;

        RawWindowHandle::Xcb(handle)
    }
}