Skip to content

Commit dd1135e

Browse files
authored
AddNSPanel trait to create NSPanels
Intention for PR described here: #511
1 parent 5143684 commit dd1135e

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

cocoa/src/appkit.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,6 +1802,39 @@ impl NSWindow for id {
18021802
// TODO: Constraint-Based Layouts
18031803
}
18041804

1805+
pub trait NSPanel: Sized {
1806+
unsafe fn alloc(_: Self) -> id {
1807+
msg_send![class!(NSPanel), alloc]
1808+
}
1809+
1810+
// NSPanel subclasses NSWindow, hence we only add the added methods
1811+
// https://developer.apple.com/documentation/appkit/nspanel
1812+
unsafe fn setBecomesKeyOnlyIfNeeded(self, becomesKeyOnlyIfNeeded: BOOL);
1813+
unsafe fn becomesKeyOnlyIfNeeded(self) -> BOOL;
1814+
unsafe fn setFloatingPanel(self, floatingPanel: BOOL);
1815+
unsafe fn floatingPanel(self) -> BOOL;
1816+
}
1817+
1818+
impl NSPanel for id {
1819+
// NSPanel subclasses NSWindow, hence we only add the added methods
1820+
// https://developer.apple.com/documentation/appkit/nspanel
1821+
unsafe fn setBecomesKeyOnlyIfNeeded(self, becomesKeyOnlyIfNeeded: BOOL) {
1822+
msg_send![self, setBecomesKeyOnlyIfNeeded: becomesKeyOnlyIfNeeded]
1823+
}
1824+
1825+
unsafe fn becomesKeyOnlyIfNeeded(self) -> BOOL {
1826+
msg_send![self, becomesKeyOnlyIfNeeded]
1827+
}
1828+
1829+
unsafe fn setFloatingPanel(self, floatingPanel: BOOL) {
1830+
msg_send![self, setFloatingPanel: floatingPanel]
1831+
}
1832+
1833+
unsafe fn floatingPanel(self) -> BOOL {
1834+
msg_send![self, isFloatingPanel]
1835+
}
1836+
}
1837+
18051838
#[repr(i64)]
18061839
#[derive(Clone, Copy, Debug, PartialEq)]
18071840
pub enum NSModalResponse {

0 commit comments

Comments
 (0)