@@ -4,9 +4,8 @@ use core::ptr::NonNull;
44use super :: DisplayHandle ;
55
66/// Raw display handle for Haiku.
7- #[ non_exhaustive]
87#[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash ) ]
9- pub struct HaikuDisplayHandle { }
8+ pub struct HaikuDisplayHandle ( ( ) ) ;
109
1110impl HaikuDisplayHandle {
1211 /// Create a new empty display handle.
@@ -19,7 +18,7 @@ impl HaikuDisplayHandle {
1918 /// let handle = HaikuDisplayHandle::new();
2019 /// ```
2120 pub fn new ( ) -> Self {
22- Self { }
21+ Self ( ( ) )
2322 }
2423}
2524
@@ -44,19 +43,15 @@ impl DisplayHandle<'static> {
4443}
4544
4645/// Raw window handle for Haiku.
47- #[ non_exhaustive]
4846#[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash ) ]
4947pub struct HaikuWindowHandle {
50- /// A pointer to a BWindow object
51- pub b_window : NonNull < c_void > ,
52- /// A pointer to a BDirectWindow object that might be null
53- pub b_direct_window : Option < NonNull < c_void > > ,
48+ b_window : NonNull < c_void > ,
49+ b_direct_window : Option < NonNull < c_void > > ,
5450}
5551
5652impl HaikuWindowHandle {
5753 /// Create a new handle to a window.
5854 ///
59- ///
6055 /// # Example
6156 ///
6257 /// ```
@@ -66,14 +61,45 @@ impl HaikuWindowHandle {
6661 /// #
6762 /// let b_window: NonNull<BWindow>;
6863 /// # b_window = NonNull::from(&());
69- /// let mut handle = HaikuWindowHandle::new(b_window.cast());
70- /// // Optionally set `b_direct_window`.
71- /// handle.b_direct_window = None;
64+ /// let handle = HaikuWindowHandle::new(b_window.cast());
7265 /// ```
7366 pub fn new ( b_window : NonNull < c_void > ) -> Self {
7467 Self {
7568 b_window,
7669 b_direct_window : None ,
7770 }
7871 }
72+
73+ /// Create a new window handle together with a `BDirectWindow`.
74+ ///
75+ /// # Example
76+ ///
77+ /// ```
78+ /// # use core::ptr::NonNull;
79+ /// # use raw_window_handle::HaikuWindowHandle;
80+ /// # type BWindow = ();
81+ /// # type BDirectWindow = ();
82+ /// #
83+ /// let b_window: NonNull<BWindow>;
84+ /// let b_direct_window: NonNull<BDirectWindow>;
85+ /// # b_window = NonNull::dangling();
86+ /// # b_direct_window = NonNull::dangling();
87+ /// let handle = HaikuWindowHandle::with_window(b_window.cast(), b_direct_window.cast());
88+ /// ```
89+ pub fn with_window ( b_window : NonNull < c_void > , b_direct_window : NonNull < c_void > ) -> Self {
90+ Self {
91+ b_window,
92+ b_direct_window : Some ( b_direct_window) ,
93+ }
94+ }
95+
96+ /// A pointer to a BWindow object.
97+ pub fn b_window ( & self ) -> NonNull < c_void > {
98+ self . b_window
99+ }
100+
101+ /// A pointer to a BDirectWindow object that might be null.
102+ pub fn b_direct_window ( & self ) -> Option < NonNull < c_void > > {
103+ self . b_direct_window
104+ }
79105}
0 commit comments