macos window title/size

* add macOS implmentation for oc_window_set_title()
* move implementation of oc_window_set_content_size() to a block that
  is guaranteed to run on the main thread
This commit is contained in:
Reuben Dunnington 2023-08-24 11:57:41 -07:00
parent 9ed636e018
commit fad375c403
Signed by: rdunnington
GPG Key ID: 3D57C8938EA08E90
1 changed files with 49 additions and 16 deletions

View File

@ -1471,6 +1471,29 @@ bool oc_window_is_focused(oc_window window)
} }
} }
void oc_window_set_title(oc_window window, oc_str8 title)
{
dispatch_block_t block = ^{
@autoreleasepool
{
oc_window_data* windowData = oc_window_ptr_from_handle(window);
if(windowData)
{
windowData->osx.nsWindow.title = [[NSString alloc] initWithBytes:title.ptr length:title.len encoding:NSUTF8StringEncoding];
}
}
};
if([NSThread isMainThread])
{
block();
}
else
{
dispatch_sync(dispatch_get_main_queue(), block);
}
}
bool oc_window_is_minimized(oc_window window) bool oc_window_is_minimized(oc_window window)
{ {
@autoreleasepool @autoreleasepool
@ -1634,9 +1657,9 @@ oc_rect oc_window_get_content_rect(oc_window window)
void oc_window_set_content_rect(oc_window window, oc_rect rect) void oc_window_set_content_rect(oc_window window, oc_rect rect)
{ {
dispatch_block_t block = ^{
@autoreleasepool @autoreleasepool
{ {
oc_window_data* windowData = oc_window_ptr_from_handle(window); oc_window_data* windowData = oc_window_ptr_from_handle(window);
if(windowData) if(windowData)
{ {
@ -1652,6 +1675,16 @@ void oc_window_set_content_rect(oc_window window, oc_rect rect)
[windowData->osx.nsWindow setFrame:frameRect display:YES]; [windowData->osx.nsWindow setFrame:frameRect display:YES];
} }
} }
};
if([NSThread isMainThread])
{
block();
}
else
{
dispatch_sync(dispatch_get_main_queue(), block);
}
} }
//-------------------------------------------------------------------- //--------------------------------------------------------------------