From 8c6120f414bf32d1f0d2c25ff795bf7a9793872c Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 12:25:14 +0000 Subject: Add Application_stop https://developer.apple.com/documentation/appkit/nsapplication/stop(_:)?language=objc --- core/sys/darwin/Foundation/NSApplication.odin | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/sys/darwin/Foundation/NSApplication.odin b/core/sys/darwin/Foundation/NSApplication.odin index a5e9f2e24..f77d8d874 100644 --- a/core/sys/darwin/Foundation/NSApplication.odin +++ b/core/sys/darwin/Foundation/NSApplication.odin @@ -132,6 +132,11 @@ Application_finishLaunching :: proc "c" (self: ^Application) { msgSend(nil, self, "finishLaunching") } +@(objc_type=Application, objc_name="stop") +Application_stop :: proc "c" (self: ^Application, sender: ^Object) { + msgSend(nil, self, "stop:", sender) +} + @(objc_type=Application, objc_name="terminate") Application_terminate :: proc "c" (self: ^Application, sender: ^Object) { msgSend(nil, self, "terminate:", sender) -- cgit v1.2.3 From b4d4cd47f59fb9e445e499e0619095de4407c1a3 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 13:45:11 +0000 Subject: Add Event_otherEventWithType https://developer.apple.com/documentation/appkit/nsevent/otherevent(with:location:modifierflags:timestamp:windownumber:context:subtype:data1:data2:) --- core/sys/darwin/Foundation/NSEvent.odin | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/core/sys/darwin/Foundation/NSEvent.odin b/core/sys/darwin/Foundation/NSEvent.odin index 548c5c172..c7968423c 100644 --- a/core/sys/darwin/Foundation/NSEvent.odin +++ b/core/sys/darwin/Foundation/NSEvent.odin @@ -250,6 +250,35 @@ kVK :: enum { ISO_Section = 0x0A, } +/* class methods for creating events */ + +@(objc_type=Event, objc_name="otherEventWithType", objc_is_class_method=true) +Event_otherEventWithType :: proc "c" ( + type: EventType, + location: Point, + flags: EventModifierFlags, + time: TimeInterval, + window_number: Integer, + ctx: id, + subtype: i16, + data1: Integer, + data2: Integer +) -> ^Event { + return msgSend( + ^Event, + Event, + "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", + type, + location, + flags, + time, + window_number, + ctx, + subtype, + data1, + data2 + ) +} /* these messages are valid for all events */ -- cgit v1.2.3 From 9f78c1e7bef4d2d9bf06e92cbeb79d0ffe9a052a Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 13:49:30 +0000 Subject: Add Application_postEvent https://developer.apple.com/documentation/appkit/nsapplication/postevent(_:atstart:)?language=objc --- core/sys/darwin/Foundation/NSApplication.odin | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/sys/darwin/Foundation/NSApplication.odin b/core/sys/darwin/Foundation/NSApplication.odin index f77d8d874..24151f439 100644 --- a/core/sys/darwin/Foundation/NSApplication.odin +++ b/core/sys/darwin/Foundation/NSApplication.odin @@ -161,6 +161,12 @@ Application_nextEventMatchingMask :: proc "c" (self: ^Application, mask: EventMa Application_sendEvent :: proc "c" (self: ^Application, event: ^Event) { msgSend(nil, self, "sendEvent:", event) } + +@(objc_type=Application, objc_name="postEvent") +Application_postEvent :: proc "c" (self: ^Application, event: ^Event, atStart: BOOL) { + msgSend(nil, self, "postEvent:atStart:", event, atStart) +} + @(objc_type=Application, objc_name="updateWindows") Application_updateWindows :: proc "c" (self: ^Application) { msgSend(nil, self, "updateWindows") -- cgit v1.2.3 From 4f939cadc30112333c7c68e73f308bb51c7bc6f9 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 14:19:41 +0000 Subject: Add RunningApplication_finishedLaunching --- core/sys/darwin/Foundation/NSApplication.odin | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/sys/darwin/Foundation/NSApplication.odin b/core/sys/darwin/Foundation/NSApplication.odin index 24151f439..6cb3df979 100644 --- a/core/sys/darwin/Foundation/NSApplication.odin +++ b/core/sys/darwin/Foundation/NSApplication.odin @@ -186,6 +186,11 @@ RunningApplication_localizedName :: proc "c" (self: ^RunningApplication) -> ^Str return msgSend(^String, self, "localizedName") } +@(objc_type=RunningApplication, objc_name="finishedLaunching") +RunningApplication_finishedLaunching :: proc "c" (self: ^RunningApplication) -> BOOL { + return msgSend(BOOL, self, "isFinishedLaunching") +} + ApplicationDelegateTemplate :: struct { // Launching Applications applicationWillFinishLaunching: proc(notification: ^Notification), -- cgit v1.2.3 From 406eb9c7f56436c44ccef093973fe35d59c30a75 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 17:28:51 +0000 Subject: Add WindowCollectionBehaviour, WindowLevel, WindowTabbingMode --- core/sys/darwin/Foundation/NSWindow.odin | 54 ++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/core/sys/darwin/Foundation/NSWindow.odin b/core/sys/darwin/Foundation/NSWindow.odin index e1b027a89..ffe848ad4 100644 --- a/core/sys/darwin/Foundation/NSWindow.odin +++ b/core/sys/darwin/Foundation/NSWindow.odin @@ -56,6 +56,60 @@ BackingStoreType :: enum UInteger { Buffered = 2, } +WindowCollectionBehaviorFlag :: enum UInteger { + CanJoinAllSpaces = 0, + MoveToActiveSpace = 1, + Managed = 2, + Transient = 3, + Stationary = 4, + ParticipatesInCycle = 5, + IgnoresCycle = 6, + FullScreenPrimary = 7, + FullScreenAuxiliary = 8, + FullScreenNone = 9, + FullScreenAllowsTiling = 11, + FullScreenDisallowsTiling = 12, + Primary = 16, + Auxiliary = 17, + CanJoinAllApplications = 18, +} +WindowCollectionBehavior :: distinct bit_set[WindowCollectionBehaviorFlag; UInteger] +WindowCollectionBehaviorDefault :: WindowCollectionBehavior{} +WindowCollectionBehaviorPrimary :: WindowCollectionBehavior{.Primary, .FullScreenAuxiliary} +WindowCollectionBehaviorAuxiliary :: WindowCollectionBehavior{.Auxiliary, .FullScreenNone} +WindowCollectionBehaviorCanJoinAllApplications :: WindowCollectionBehavior{.CanJoinAllApplications} +WindowCollectionBehaviorCanJoinAllSpaces :: WindowCollectionBehavior{.CanJoinAllSpaces} +WindowCollectionBehaviorMoveToActiveSpace :: WindowCollectionBehavior{.MoveToActiveSpace} +WindowCollectionBehaviorStationary :: WindowCollectionBehavior{.Stationary} +WindowCollectionBehaviorManaged :: WindowCollectionBehavior{.Managed} +WindowCollectionBehaviorTransient :: WindowCollectionBehavior{.Transient} +WindowCollectionBehaviorFullScreenPrimary :: WindowCollectionBehavior{.FullScreenPrimary} +WindowCollectionBehaviorFullScreenAuxiliary :: WindowCollectionBehavior{.FullScreenAuxiliary} +WindowCollectionBehaviorFullScreenNone :: WindowCollectionBehavior{.FullScreenNone} +WindowCollectionBehaviorFullScreenAllowsTiling :: WindowCollectionBehavior{.FullScreenAllowsTiling} +WindowCollectionBehaviorFullScreenDisallowsTiling :: WindowCollectionBehavior{.FullScreenDisallowsTiling} +WindowCollectionBehaviorParticipatesInCycle :: WindowCollectionBehavior{.ParticipatesInCycle} +WindowCollectionBehaviorIgnoresCycle :: WindowCollectionBehavior{.IgnoresCycle} + +WindowLevel :: enum Integer { + Normal = 0, + Floating = 3, + Submenu = 3, + TornOffMenu = 3, + ModalPanel = 8, + MainMenu = 24, + Status = 25, + PopUpMenu = 101, + ScreenSaver = 1000, +} + +WindowTabbingMode :: enum Integer { + Automatic = 0, + Preferred = 1, + Disallowed = 2, +} + + WindowDelegateTemplate :: struct { // Managing Sheets windowWillPositionSheetUsingRect: proc(window: ^Window, sheet: ^Window, rect: Rect) -> Rect, -- cgit v1.2.3 From 8b3d74f797e118b165c7669d0249291a56a1a2a5 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 17:54:42 +0000 Subject: Add getter for the WindowDelegate from the Window --- core/sys/darwin/Foundation/NSWindow.odin | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/sys/darwin/Foundation/NSWindow.odin b/core/sys/darwin/Foundation/NSWindow.odin index ffe848ad4..2e51d7b64 100644 --- a/core/sys/darwin/Foundation/NSWindow.odin +++ b/core/sys/darwin/Foundation/NSWindow.odin @@ -776,6 +776,10 @@ Window_close :: proc "c" (self: ^Window) { Window_setDelegate :: proc "c" (self: ^Window, delegate: ^WindowDelegate) { msgSend(nil, self, "setDelegate:", delegate) } +@(objc_type = Window, objc_name = "delegate") +Window_delegate :: proc "c" (self: ^Window) -> ^WindowDelegate { + return msgSend(^WindowDelegate, self, "delegate") +} @(objc_type=Window, objc_name="backingScaleFactor") Window_backingScaleFactor :: proc "c" (self: ^Window) -> Float { return msgSend(Float, self, "backingScaleFactor") -- cgit v1.2.3 From 916e8810cc978d64f0649bd9575cedfd4c00ab33 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 18:06:15 +0000 Subject: Add orderFront and orderOut --- core/sys/darwin/Foundation/NSWindow.odin | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/sys/darwin/Foundation/NSWindow.odin b/core/sys/darwin/Foundation/NSWindow.odin index 2e51d7b64..f66228890 100644 --- a/core/sys/darwin/Foundation/NSWindow.odin +++ b/core/sys/darwin/Foundation/NSWindow.odin @@ -740,6 +740,14 @@ Window_backgroundColor :: proc "c" (self: ^Window) -> ^Color { Window_setBackgroundColor :: proc "c" (self: ^Window, color: ^Color) { msgSend(nil, self, "setBackgroundColor:", color) } +@(objc_type = Window, objc_name = "orderFront") +Window_orderFront :: proc "c" (self: ^Window, sender: id) { + msgSend(nil, self, "orderFront:", sender) +} +@(objc_type = Window, objc_name = "orderOut") +Window_orderOut :: proc "c" (self: ^Window, sender: id) { + msgSend(nil, self, "orderOut:", sender) +} @(objc_type=Window, objc_name="makeKeyAndOrderFront") Window_makeKeyAndOrderFront :: proc "c" (self: ^Window, key: ^Object) { msgSend(nil, self, "makeKeyAndOrderFront:", key) -- cgit v1.2.3 From 332653ca24a399dfb24660353d086d7e97d44985 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 18:06:43 +0000 Subject: Add additional window bindings --- core/sys/darwin/Foundation/NSWindow.odin | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/core/sys/darwin/Foundation/NSWindow.odin b/core/sys/darwin/Foundation/NSWindow.odin index f66228890..bbfaa14cd 100644 --- a/core/sys/darwin/Foundation/NSWindow.odin +++ b/core/sys/darwin/Foundation/NSWindow.odin @@ -864,3 +864,35 @@ Window_performWindowDragWithEvent :: proc "c" (self: ^Window, event: ^Event) { Window_setToolbar :: proc "c" (self: ^Window, toolbar: ^Toolbar) { msgSend(nil, self, "setToolbar:", toolbar) } +@(objc_type = Window, objc_name = "setCollectionBehavior") +Window_setCollectionBehavior :: proc "c" (self: ^Window, behavior: WindowCollectionBehavior) { + msgSend(nil, self, "setCollectionBehavior:", behavior) +} +@(objc_type = Window, objc_name = "collectionBehavior") +Window_collectionBehavior :: proc "c" (self: ^Window) -> WindowCollectionBehavior { + return msgSend(WindowCollectionBehavior, self, "collectionBehavior") +} +@(objc_type = Window, objc_name = "setLevel") +Window_setLevel :: proc "c" (self: ^Window, level: WindowLevel) { + msgSend(nil, self, "setLevel:", level) +} +@(objc_type = Window, objc_name = "setReleasedWhenClosed") +Window_setReleasedWhenClosed :: proc "c" (self: ^Window, flag: BOOL) { + msgSend(nil, self, "setReleasedWhenClosed:", flag) +} +@(objc_type = Window, objc_name = "makeFirstResponder") +Window_makeFirstResponder :: proc "c" (self: ^Window, responder: ^Responder) -> BOOL { + return msgSend(BOOL, self, "makeFirstResponder:", responder) +} +@(objc_type = Window, objc_name = "setRestorable") +Window_setRestorable :: proc "c" (self: ^Window, flag: BOOL) { + msgSend(nil, self, "setRestorable:", flag) +} +@(objc_type = Window, objc_name = "setTabbingMode") +Window_setTabbingMode :: proc "c" (self: ^Window, mode: WindowTabbingMode) { + msgSend(nil, self, "setTabbingMode:", mode) +} +@(objc_type = Window, objc_name = "toggleFullScreen") +Window_toggleFullScreen :: proc "c" (self: ^Window, sender: id) { + msgSend(nil, self, "toggleFullScreen:", sender) +} -- cgit v1.2.3 From 65ee1339b9309464fb3a1cae991ae058ac5f7938 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 23:03:33 +0000 Subject: Add View alloc --- core/sys/darwin/Foundation/NSWindow.odin | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/sys/darwin/Foundation/NSWindow.odin b/core/sys/darwin/Foundation/NSWindow.odin index bbfaa14cd..173826c79 100644 --- a/core/sys/darwin/Foundation/NSWindow.odin +++ b/core/sys/darwin/Foundation/NSWindow.odin @@ -654,6 +654,10 @@ Responder :: struct {using _: Object} @(objc_class="NSView") View :: struct {using _: Responder} +@(objc_type=View, objc_name="alloc", objc_is_class_method=true) +View_alloc :: proc "c" () -> ^View { + return msgSend(^View, View, "alloc") +} @(objc_type=View, objc_name="initWithFrame") View_initWithFrame :: proc "c" (self: ^View, frame: Rect) -> ^View { -- cgit v1.2.3 From 4485a45866f2e0ca50e197822c54e085fbafcaea Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 23:05:26 +0000 Subject: Add Window_center --- core/sys/darwin/Foundation/NSWindow.odin | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/sys/darwin/Foundation/NSWindow.odin b/core/sys/darwin/Foundation/NSWindow.odin index 173826c79..e5bc10074 100644 --- a/core/sys/darwin/Foundation/NSWindow.odin +++ b/core/sys/darwin/Foundation/NSWindow.odin @@ -728,6 +728,10 @@ Window_setFrame :: proc "c" (self: ^Window, frame: Rect, display: BOOL) { Window_setFrameOrigin :: proc "c" (self: ^Window, origin: Point) { msgSend(nil, self, "setFrameOrigin:", origin) } +@(objc_type=Window, objc_name="center") +Window_center :: proc "c" (self: ^Window) { + msgSend(nil, self, "center") +} @(objc_type=Window, objc_name="opaque") Window_opaque :: proc "c" (self: ^Window) -> BOOL { return msgSend(BOOL, self, "opaque") -- cgit v1.2.3 From 2951e51487ee7a0c40db39b94da7bf2e96a76084 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 3 Nov 2025 23:16:25 +0000 Subject: Add comma to last enums to fix build check --- core/sys/darwin/Foundation/NSEvent.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/sys/darwin/Foundation/NSEvent.odin b/core/sys/darwin/Foundation/NSEvent.odin index c7968423c..3bd0c1879 100644 --- a/core/sys/darwin/Foundation/NSEvent.odin +++ b/core/sys/darwin/Foundation/NSEvent.odin @@ -262,7 +262,7 @@ Event_otherEventWithType :: proc "c" ( ctx: id, subtype: i16, data1: Integer, - data2: Integer + data2: Integer, ) -> ^Event { return msgSend( ^Event, @@ -276,7 +276,7 @@ Event_otherEventWithType :: proc "c" ( ctx, subtype, data1, - data2 + data2, ) } -- cgit v1.2.3