Merge pull request #5998 from slowhei/master

Added more NSApplication and NSWindow bindings
This commit is contained in:
gingerBill
2025-12-07 16:37:52 +00:00
committed by GitHub
2 changed files with 58 additions and 0 deletions

View File

@@ -92,6 +92,11 @@ Application_activate :: proc "c" (self: ^Application) {
msgSend(nil, self, "activate")
}
@(objc_type=Application, objc_name="active")
Application_active :: proc "c" (self: ^Application) -> BOOL {
return msgSend(BOOL, self, "isActive")
}
@(objc_type=Application, objc_name="setTitle")
Application_setTitle :: proc "c" (self: ^Application, title: ^String) {
msgSend(nil, self, "setTitle", title)
@@ -107,6 +112,35 @@ Application_setMainMenu :: proc "c" (self: ^Application, menu: ^Menu) {
msgSend(nil, self, "setMainMenu:", menu)
}
// This property is actually not exposed in AppKit's public API.
// But there is basically no other way to configure the apple menu without using NIB files.
// Therefore, an Odin binding for this non-public API was created.
// Note: SDL also calls this non-public method.
@(objc_type=Application, objc_name="setAppleMenu")
Application_setAppleMenu :: proc "c" (self: ^Application, menu: ^Menu) {
msgSend(nil, self, "setAppleMenu:", menu)
}
@(objc_type=Application, objc_name="servicesMenu")
Application_servicesMenu :: proc "c" (self: ^Application) -> ^Menu {
return msgSend(^Menu, self, "servicesMenu")
}
@(objc_type=Application, objc_name="setServicesMenu")
Application_setServicesMenu :: proc "c" (self: ^Application, menu: ^Menu) {
msgSend(nil, self, "setServicesMenu:", menu)
}
@(objc_type=Application, objc_name="windowsMenu")
Application_windowsMenu :: proc "c" (self: ^Application) -> ^Menu {
return msgSend(^Menu, self, "windowsMenu")
}
@(objc_type=Application, objc_name="setWindowsMenu")
Application_setWindowsMenu :: proc "c" (self: ^Application, menu: ^Menu) {
msgSend(nil, self, "setWindowsMenu:", menu)
}
@(objc_type=Application, objc_name="mainWindow")
Application_mainWindow :: proc "c" (self: ^Application) -> ^Window {
return msgSend(^Window, self, "mainWindow")

View File

@@ -643,6 +643,14 @@ Layer_setContentsScale :: proc "c" (self: ^Layer, scale: Float) {
Layer_frame :: proc "c" (self: ^Layer) -> Rect {
return msgSend(Rect, self, "frame")
}
@(objc_type=Layer, objc_name="position")
Layer_position :: proc "c" (self: ^Layer) -> Point {
return msgSend(Point, self, "position")
}
@(objc_type=Layer, objc_name="setPosition")
Layer_setPosition :: proc "c" (self: ^Layer, position: Point) {
msgSend(nil, self, "setPosition:", position)
}
@(objc_type=Layer, objc_name="addSublayer")
Layer_addSublayer :: proc "c" (self: ^Layer, layer: ^Layer) {
msgSend(nil, self, "addSublayer:", layer)
@@ -784,6 +792,10 @@ Window_setAcceptsMouseMovedEvents :: proc "c" (self: ^Window, ok: BOOL) {
Window_setStyleMask :: proc "c" (self: ^Window, style_mask: WindowStyleMask) {
msgSend(nil, self, "setStyleMask:", style_mask)
}
@(objc_type=Window, objc_name="performClose")
Window_performClose :: proc "c" (self: ^Window, sender: id) {
msgSend(nil, self, "performClose:", sender)
}
@(objc_type=Window, objc_name="close")
Window_close :: proc "c" (self: ^Window) {
msgSend(nil, self, "close")
@@ -916,6 +928,18 @@ Window_collectionBehavior :: proc "c" (self: ^Window) -> WindowCollectionBehavio
Window_setLevel :: proc "c" (self: ^Window, level: WindowLevel) {
msgSend(nil, self, "setLevel:", level)
}
@(objc_type = Window, objc_name = "keyWindow")
Window_keyWindow :: proc "c" (self: ^Window) -> BOOL {
return msgSend(BOOL, self, "isKeyWindow")
}
@(objc_type = Window, objc_name = "mainWindow")
Window_mainWindow :: proc "c" (self: ^Window) -> BOOL {
return msgSend(BOOL, self, "isMainWindow")
}
@(objc_type = Window, objc_name = "parentWindow")
Window_parentWindow :: proc "c" (self: ^Window) -> ^Window {
return msgSend(^Window, self, "parentWindow")
}
@(objc_type = Window, objc_name = "setReleasedWhenClosed")
Window_setReleasedWhenClosed :: proc "c" (self: ^Window, flag: BOOL) {
msgSend(nil, self, "setReleasedWhenClosed:", flag)