Fix remaining build errors for Cocoa.

This commit is contained in:
ws909 2023-01-26 08:50:42 +01:00
parent bbd5bcb7fd
commit b5363d87d2
2 changed files with 51 additions and 47 deletions

View File

@ -35,19 +35,6 @@
// Needed for _NSGetProgname
#include <crt_externs.h>
#if MAC_OS_X_VERSION_MAX_ALLOWED < 101000
NSAppearanceName const NSAppearanceNameVibrantLight = @"NSAppearanceNameVibrantLight";
NSAppearanceName const NSAppearanceNameVibrantDark = @"NSAppearanceNameVibrantDark";
#endif
#if MAC_OS_X_VERSION_MAX_ALLOWED < 101400
NSAppearanceName const NSAppearanceNameDarkAqua = @"NSAppearanceNameDarkAqua";
NSAppearanceName const NSAppearanceNameAccessibilityHighContrastAqua = @"NSAppearanceNameAccessibilityAqua";
NSAppearanceName const NSAppearanceNameAccessibilityHighContrastDarkAqua = @"NSAppearanceNameAccessibilityDarkAqua";
NSAppearanceName const NSAppearanceNameAccessibilityHighContrastVibrantLight = @"NSAppearanceNameAccessibilityVibrantLight";
NSAppearanceName const NSAppearanceNameAccessibilityHighContrastVibrantDark = @"NSAppearanceNameAccessibilityVibrantDark";
#endif
// Change to our application bundle's resources directory, if present
//
static void changeToResourcesDirectory(void)
@ -211,41 +198,58 @@ void nsAppearanceToGLFWTheme(NSAppearance* appearance, GLFWtheme* theme)
if ([name isEqualToString:NSAppearanceNameAqua])
{
theme->baseTheme = GLFW_BASE_THEME_LIGHT;
return;
}
else if ([name isEqualToString:NSAppearanceNameDarkAqua])
if (@available(macOS 10.10, *)) {
if ([name isEqualToString:NSAppearanceNameVibrantLight])
{
theme->baseTheme = GLFW_BASE_THEME_LIGHT;
theme->flags |= GLFW_THEME_FLAG_VIBRANT;
return;
}
if ([name isEqualToString:NSAppearanceNameVibrantDark])
{
theme->baseTheme = GLFW_BASE_THEME_DARK;
theme->flags |= GLFW_THEME_FLAG_VIBRANT;
return;
}
}
if (@available(macOS 10.14, *))
{
theme->baseTheme = GLFW_BASE_THEME_DARK;
}
else if ([name isEqualToString:NSAppearanceNameVibrantLight])
{
theme->baseTheme = GLFW_BASE_THEME_LIGHT;
theme->flags |= GLFW_THEME_FLAG_VIBRANT;
}
else if ([name isEqualToString:NSAppearanceNameVibrantDark])
{
theme->baseTheme = GLFW_BASE_THEME_DARK;
theme->flags |= GLFW_THEME_FLAG_VIBRANT;
}
if ([name isEqualToString:NSAppearanceNameAccessibilityHighContrastAqua])
{
theme->baseTheme = GLFW_BASE_THEME_LIGHT;
theme->flags |= GLFW_THEME_FLAG_HIGH_CONTRAST;
}
else if ([name isEqualToString:NSAppearanceNameAccessibilityHighContrastDarkAqua])
{
theme->baseTheme = GLFW_BASE_THEME_DARK;
theme->flags |= GLFW_THEME_FLAG_HIGH_CONTRAST;
}
else if ([name isEqualToString:NSAppearanceNameAccessibilityHighContrastVibrantLight])
{
theme->baseTheme = GLFW_BASE_THEME_LIGHT;
theme->flags |= GLFW_THEME_FLAG_VIBRANT | GLFW_THEME_FLAG_HIGH_CONTRAST;
}
else if ([name isEqualToString:NSAppearanceNameAccessibilityHighContrastVibrantDark])
{
theme->baseTheme = GLFW_BASE_THEME_DARK;
theme->flags |= GLFW_THEME_FLAG_VIBRANT | GLFW_THEME_FLAG_HIGH_CONTRAST;
if ([name isEqualToString:NSAppearanceNameDarkAqua])
{
theme->baseTheme = GLFW_BASE_THEME_DARK;
return;
}
if ([name isEqualToString:NSAppearanceNameAccessibilityHighContrastAqua])
{
theme->baseTheme = GLFW_BASE_THEME_LIGHT;
theme->flags |= GLFW_THEME_FLAG_HIGH_CONTRAST;
return;
}
if ([name isEqualToString:NSAppearanceNameAccessibilityHighContrastDarkAqua])
{
theme->baseTheme = GLFW_BASE_THEME_DARK;
theme->flags |= GLFW_THEME_FLAG_HIGH_CONTRAST;
return;
}
if ([name isEqualToString:NSAppearanceNameAccessibilityHighContrastVibrantLight])
{
theme->baseTheme = GLFW_BASE_THEME_LIGHT;
theme->flags |= GLFW_THEME_FLAG_VIBRANT | GLFW_THEME_FLAG_HIGH_CONTRAST;
return;
}
if ([name isEqualToString:NSAppearanceNameAccessibilityHighContrastVibrantDark])
{
theme->baseTheme = GLFW_BASE_THEME_DARK;
theme->flags |= GLFW_THEME_FLAG_VIBRANT | GLFW_THEME_FLAG_HIGH_CONTRAST;
return;
}
}
theme->baseTheme = GLFW_BASE_THEME_LIGHT;
}
// Create key code translation tables

View File

@ -1880,7 +1880,7 @@ void _glfwSetThemeCocoa(_GLFWwindow* window, GLFWtheme* theme)
{
if (!theme || theme->baseTheme == GLFW_BASE_THEME_DEFAULT)
{
[window->ns.object setAppearance:nil];
[(NSWindow*)window->ns.object setAppearance:nil];
return;
}
@ -1923,7 +1923,7 @@ void _glfwSetThemeCocoa(_GLFWwindow* window, GLFWtheme* theme)
}
NSAppearance* appearance = [NSAppearance appearanceNamed:name];
[window->ns.object setAppearance:appearance];
[(NSWindow*)window->ns.object setAppearance:appearance];
}
GLFWtheme* _glfwGetThemeCocoa(_GLFWwindow* window)