Fix macOS deprecation warnings

master
Rye 2025-08-18 21:26:20 -04:00
parent 52cca995cc
commit 77514ebddd
10 changed files with 36 additions and 121 deletions

View File

@ -1314,7 +1314,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do
{
//Build a joint for the resolver to work with
char str[64]={0};
sprintf(str,"./%s",(*jointIt).first.c_str() );
snprintf(str, sizeof(str), "./%s",(*jointIt).first.c_str() );
//LL_WARNS()<<"Joint "<< str <<LL_ENDL;
//Setup the resolver

View File

@ -88,9 +88,6 @@
@interface LLNSWindow : NSWindow
- (NSPoint)convertToScreenFromLocalPoint:(NSPoint)point relativeToView:(NSView *)view;
- (NSPoint)flipPoint:(NSPoint)aPoint;
@end
@interface NSScreen (PointConversion)
@ -100,16 +97,6 @@
*/
+ (NSScreen *)currentScreenForMouseLocation;
/*
Allows you to convert a point from global coordinates to the current screen coordinates.
*/
- (NSPoint)convertPointToScreenCoordinates:(NSPoint)aPoint;
/*
Allows to flip the point coordinates, so y is 0 at the top instead of the bottom. x remains the same
*/
- (NSPoint)flipPoint:(NSPoint)aPoint;
@end
#endif

View File

@ -28,6 +28,8 @@
#import "llwindowmacosx-objc.h"
#import "llappdelegate-objc.h"
#import <Carbon/Carbon.h>
extern BOOL gHiDPISupport;
#pragma mark local functions
@ -105,20 +107,6 @@ attributedStringInfo getSegments(NSAttributedString *str)
return screen;
}
- (NSPoint)convertPointToScreenCoordinates:(NSPoint)aPoint
{
float normalizedX = fabs(fabs(self.frame.origin.x) - fabs(aPoint.x));
float normalizedY = aPoint.y - self.frame.origin.y;
return NSMakePoint(normalizedX, normalizedY);
}
- (NSPoint)flipPoint:(NSPoint)aPoint
{
return NSMakePoint(aPoint.x, self.frame.size.height - aPoint.y);
}
@end
@implementation LLOpenGLView
@ -244,7 +232,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
- (id) initWithFrame:(NSRect)frame withSamples:(NSUInteger)samples andVsync:(BOOL)vsync
{
[self registerForDraggedTypes:[NSArray arrayWithObject:NSURLPboardType]];
[self registerForDraggedTypes:[NSArray arrayWithObject:NSPasteboardTypeURL]];
[self initWithFrame:frame];
// Initialize with a default "safe" pixel format that will work with versions dating back to OS X 10.6.
@ -295,13 +283,13 @@ attributedStringInfo getSegments(NSAttributedString *str)
if (vsync)
{
GLint value = 1;
[glContext setValues:&value forParameter:NSOpenGLCPSwapInterval];
[glContext setValues:&value forParameter:NSOpenGLContextParameterSwapInterval];
} else {
// supress this error after move to Xcode 7:
// error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull]
// Tried using ObjC 'nonnull' keyword as per SO article but didn't build
GLint swapInterval=0;
[glContext setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval];
[glContext setValues:&swapInterval forParameter:NSOpenGLContextParameterSwapInterval];
}
mOldResize = false;
@ -355,13 +343,13 @@ attributedStringInfo getSegments(NSAttributedString *str)
mMousePos[1] = mPoint.y;
// Apparently people still use this?
if ([theEvent modifierFlags] & NSCommandKeyMask &&
!([theEvent modifierFlags] & NSControlKeyMask) &&
!([theEvent modifierFlags] & NSShiftKeyMask) &&
!([theEvent modifierFlags] & NSAlternateKeyMask) &&
!([theEvent modifierFlags] & NSAlphaShiftKeyMask) &&
!([theEvent modifierFlags] & NSFunctionKeyMask) &&
!([theEvent modifierFlags] & NSHelpKeyMask))
if ([theEvent modifierFlags] & NSEventModifierFlagCommand &&
!([theEvent modifierFlags] & NSEventModifierFlagControl) &&
!([theEvent modifierFlags] & NSEventModifierFlagShift) &&
!([theEvent modifierFlags] & NSEventModifierFlagOption) &&
!([theEvent modifierFlags] & NSEventModifierFlagCapsLock) &&
!([theEvent modifierFlags] & NSEventModifierFlagFunction) &&
!([theEvent modifierFlags] & NSEventModifierFlagHelp))
{
callRightMouseDown(mMousePos, [theEvent modifierFlags]);
mSimulatedRightClick = true;
@ -511,7 +499,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
if (acceptsText &&
!mMarkedTextAllowed &&
!(mModifiers & (NSControlKeyMask | NSCommandKeyMask)) && // commands don't invoke InputWindow
!(mModifiers & (NSEventModifierFlagControl | NSEventModifierFlagCommand)) && // commands don't invoke InputWindow
![(LLAppDelegate*)[NSApp delegate] romanScript] &&
ch > ' ' &&
ch != NSDeleteCharacter &&
@ -534,14 +522,14 @@ attributedStringInfo getSegments(NSAttributedString *str)
NSInteger mask = 0;
switch([theEvent keyCode])
{
case 56:
mask = NSShiftKeyMask;
case kVK_Shift:
mask = NSEventModifierFlagShift;
break;
case 58:
mask = NSAlternateKeyMask;
case kVK_Option:
mask = NSEventModifierFlagOption;
break;
case 59:
mask = NSControlKeyMask;
case kVK_Control:
mask = NSEventModifierFlagControl;
break;
default:
return;
@ -582,7 +570,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
pboard = [sender draggingPasteboard];
if ([[pboard types] containsObject:NSURLPboardType])
if ([[pboard types] containsObject:NSPasteboardTypeURL])
{
if (sourceDragMask & NSDragOperationLink) {
NSURL *fileUrl = [[pboard readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]] options:[NSDictionary dictionary]] objectAtIndex:0];
@ -657,7 +645,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
};
int string_length = [aString length];
unichar text[string_length];
unichar* text = (unichar*)malloc(sizeof(unichar) * string_length);
attributedStringInfo segments;
// I used 'respondsToSelector:@selector(string)'
// to judge aString is an attributed string or not.
@ -675,6 +663,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
segments.seg_standouts.push_back(true);
}
setMarkedText(text, selected, replacement, string_length, segments);
free(text);
if (string_length > 0)
{
mHasMarkedText = TRUE;
@ -783,9 +772,9 @@ attributedStringInfo getSegments(NSAttributedString *str)
- (void) insertNewline:(id)sender
{
if (!(mModifiers & NSCommandKeyMask) &&
!(mModifiers & NSShiftKeyMask) &&
!(mModifiers & NSAlternateKeyMask))
if (!(mModifiers & NSEventModifierFlagCommand) &&
!(mModifiers & NSEventModifierFlagShift) &&
!(mModifiers & NSEventModifierFlagOption))
{
callUnicodeCallback(13, 0);
} else {
@ -904,27 +893,6 @@ attributedStringInfo getSegments(NSAttributedString *str)
return self;
}
- (NSPoint)convertToScreenFromLocalPoint:(NSPoint)point relativeToView:(NSView *)view
{
NSScreen *currentScreen = [NSScreen currentScreenForMouseLocation];
if(currentScreen)
{
NSPoint windowPoint = [view convertPoint:point toView:nil];
NSPoint screenPoint = [[view window] convertBaseToScreen:windowPoint];
NSPoint flippedScreenPoint = [currentScreen flipPoint:screenPoint];
flippedScreenPoint.y += [currentScreen frame].origin.y;
return flippedScreenPoint;
}
return NSZeroPoint;
}
- (NSPoint)flipPoint:(NSPoint)aPoint
{
return NSMakePoint(aPoint.x, self.frame.size.height - aPoint.y);
}
- (BOOL) becomeFirstResponder
{
callFocus();

View File

@ -213,7 +213,8 @@ OSErr setImageCursor(CursorRef ref)
NSWindowRef createNSWindow(int x, int y, int width, int height)
{
LLNSWindow *window = [[LLNSWindow alloc]initWithContentRect:NSMakeRect(x, y, width, height)
styleMask:NSTitledWindowMask | NSResizableWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSTexturedBackgroundWindowMask backing:NSBackingStoreBuffered defer:NO];
styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskResizable | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable
backing:NSBackingStoreBuffered defer:NO];
[window makeKeyAndOrderFront:nil];
[window setAcceptsMouseMovedEvents:TRUE];
[window setRestorable:FALSE]; // Viewer manages state from own settings

View File

@ -372,7 +372,7 @@ struct AttachmentInfo
- (void)sendEvent:(NSEvent *)event
{
[super sendEvent:event];
if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask))
if ([event type] == NSEventTypeKeyUp && ([event modifierFlags] & NSEventModifierFlagCommand))
{
[[self keyWindow] sendEvent:event];
}

View File

@ -30,9 +30,6 @@
#include <string>
#include <vector>
//Why? Because BOOL
void launchApplication(const std::string* app_name, const std::vector<std::string>* args);
void force_ns_sxeption();
#endif // LL_LLAPPVIEWERMACOSX_OBJC_H

View File

@ -33,45 +33,6 @@
#include "llappviewermacosx-objc.h"
void launchApplication(const std::string* app_name, const std::vector<std::string>* args)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if (app_name->empty()) return;
NSMutableString* app_name_ns = [NSMutableString stringWithString:[[NSBundle mainBundle] resourcePath]]; //Path to resource dir
[app_name_ns appendFormat:@"/%@", [NSString stringWithCString:app_name->c_str()
encoding:[NSString defaultCStringEncoding]]];
NSMutableArray *args_ns = nil;
args_ns = [[NSMutableArray alloc] init];
for (int i=0; i < args->size(); ++i)
{
NSLog(@"Adding string %s", (*args)[i].c_str());
[args_ns addObject:
[NSString stringWithCString:(*args)[i].c_str()
encoding:[NSString defaultCStringEncoding]]];
}
NSTask *task = [[NSTask alloc] init];
NSBundle *bundle = [NSBundle bundleWithPath:[[NSWorkspace sharedWorkspace] fullPathForApplication:app_name_ns]];
[task setLaunchPath:[bundle executablePath]];
[task setArguments:args_ns];
[task launch];
// NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
// NSURL *url = [NSURL fileURLWithPath:[workspace fullPathForApplication:app_name_ns]];
//
// NSError *error = nil;
// [workspace launchApplicationAtURL:url options:0 configuration:[NSDictionary dictionaryWithObject:args_ns forKey:NSWorkspaceLaunchConfigurationArguments] error:&error];
//TODO Handle error
[pool release];
return;
}
void force_ns_sxeption()
{
NSException *exception = [NSException exceptionWithName:@"Forced NSException" reason:nullptr userInfo:nullptr];

View File

@ -86,7 +86,7 @@ std::unique_ptr<std::vector<std::string>> doLoadDialog(const std::vector<std::st
result = [panel runModal];
if (result == NSOKButton)
if (result == NSModalResponseOK)
{
NSArray *filesToOpen = [panel URLs];
int i, count = [filesToOpen count];
@ -173,7 +173,7 @@ std::unique_ptr<std::string> doSaveDialog(const std::string* file,
[panel setNameFieldStringValue: fileName];
[panel setDirectoryURL: url];
if([panel runModal] ==
NSFileHandlingPanelOKButton)
NSModalResponseOK)
{
NSURL* url = [panel URL];
NSString* p = [url path];
@ -211,7 +211,7 @@ void doSaveDialogModeless(const std::string* file,
[panel beginWithCompletionHandler:^(NSModalResponse result)
{
if (result == NSOKButton)
if (result == NSModalResponseOK)
{
NSURL* url = [panel URL];
NSString* p = [url path];

View File

@ -1284,7 +1284,7 @@ void LLFloaterEmojiPicker::saveState()
if (!recentlyUsed.empty())
recentlyUsed += ",";
char buffer[32];
sprintf(buffer, "%u", (U32)emoji);
snprintf(buffer, sizeof(buffer), "%u", (U32)emoji);
recentlyUsed += buffer;
if (!--maxCount)
break;
@ -1301,7 +1301,7 @@ void LLFloaterEmojiPicker::saveState()
if (!frequentlyUsed.empty())
frequentlyUsed += ",";
char buffer[32];
sprintf(buffer, "%u:%u", (U32)it.first, (U32)it.second);
snprintf(buffer, sizeof(buffer), "%u:%u", (U32)it.first, (U32)it.second);
frequentlyUsed += buffer;
if (!--maxCount)
break;

View File

@ -1042,7 +1042,7 @@ void LLFloaterUIPreview::getExecutablePath(const std::vector<std::string>& filen
{
CFStringRef executable_cfstr = (CFStringRef)CFDictionaryGetValue(bundleInfoDict, CFSTR("CFBundleExecutable")); // get the name of the actual executable (e.g. TextEdit or firefox-bin)
int max_file_length = 256; // (max file name length is 255 in OSX)
char executable_buf[max_file_length];
char* executable_buf = (char*)malloc(sizeof(char) * max_file_length);
if(CFStringGetCString(executable_cfstr, executable_buf, max_file_length, kCFStringEncodingMacRoman)) // convert CFStringRef to char*
{
executable_path += std::string("/Contents/MacOS/") + std::string(executable_buf); // append path to executable directory and then executable name to exec path
@ -1052,6 +1052,7 @@ void LLFloaterUIPreview::getExecutablePath(const std::vector<std::string>& filen
std::string warning = "Unable to get CString from CFString for executable path";
popupAndPrintWarning(warning);
}
free(executable_buf);
}
else
{