Fix tabs and trailing spaces in objc sources
parent
f0d8e8f23c
commit
11f73b0e7f
|
|
@ -7,14 +7,14 @@ repos:
|
|||
- id: no-trigraphs
|
||||
- id: copyright
|
||||
- id: end-of-file
|
||||
files: \.(cpp|c|h|py|glsl|cmake|txt)$
|
||||
files: \.(cpp|c|m|mm|h|py|glsl|cmake|txt)$
|
||||
exclude: language.txt
|
||||
- id: indent-with-spaces
|
||||
files: \.(cpp|c|h|inl|py|glsl|cmake)$
|
||||
files: \.(cpp|c|m|mm|h|inl|py|glsl|cmake)$
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: check-xml
|
||||
- id: mixed-line-ending
|
||||
- id: trailing-whitespace
|
||||
files: \.(cpp|c|h|inl|py|glsl|cmake|yaml|sh)$
|
||||
files: \.(cpp|c|m|mm|h|inl|py|glsl|cmake|yaml|sh)$
|
||||
|
|
|
|||
|
|
@ -38,51 +38,51 @@
|
|||
|
||||
void LLCocoaPlugin::setupCocoa()
|
||||
{
|
||||
static bool inited = false;
|
||||
static bool inited = false;
|
||||
|
||||
if(!inited)
|
||||
{
|
||||
createAutoReleasePool();
|
||||
if(!inited)
|
||||
{
|
||||
createAutoReleasePool();
|
||||
|
||||
// The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents.
|
||||
// ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr'
|
||||
// when init'ing the Cocoa App window.
|
||||
[[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"];
|
||||
// The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents.
|
||||
// ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr'
|
||||
// when init'ing the Cocoa App window.
|
||||
[[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"];
|
||||
|
||||
// This is a bit of voodoo taken from the Apple sample code "CarbonCocoa_PictureCursor":
|
||||
// http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html
|
||||
// This is a bit of voodoo taken from the Apple sample code "CarbonCocoa_PictureCursor":
|
||||
// http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html
|
||||
|
||||
// Needed for Carbon based applications which call into Cocoa
|
||||
NSApplicationLoad();
|
||||
// Needed for Carbon based applications which call into Cocoa
|
||||
NSApplicationLoad();
|
||||
|
||||
// Must first call [[[NSWindow alloc] init] release] to get the NSWindow machinery set up so that NSCursor can use a window to cache the cursor image
|
||||
[[[NSWindow alloc] init] release];
|
||||
// Must first call [[[NSWindow alloc] init] release] to get the NSWindow machinery set up so that NSCursor can use a window to cache the cursor image
|
||||
[[[NSWindow alloc] init] release];
|
||||
|
||||
mPluginWindow = [NSApp mainWindow];
|
||||
|
||||
deleteAutoReleasePool();
|
||||
deleteAutoReleasePool();
|
||||
|
||||
inited = true;
|
||||
}
|
||||
inited = true;
|
||||
}
|
||||
}
|
||||
|
||||
static NSAutoreleasePool *sPool = NULL;
|
||||
|
||||
void LLCocoaPlugin::createAutoReleasePool()
|
||||
{
|
||||
if(!sPool)
|
||||
{
|
||||
sPool = [[NSAutoreleasePool alloc] init];
|
||||
}
|
||||
if(!sPool)
|
||||
{
|
||||
sPool = [[NSAutoreleasePool alloc] init];
|
||||
}
|
||||
}
|
||||
|
||||
void LLCocoaPlugin::deleteAutoReleasePool()
|
||||
{
|
||||
if(sPool)
|
||||
{
|
||||
[sPool release];
|
||||
sPool = NULL;
|
||||
}
|
||||
if(sPool)
|
||||
{
|
||||
[sPool release];
|
||||
sPool = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
LLCocoaPlugin::LLCocoaPlugin():mHackState(0)
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
- (unsigned long)getVramSize
|
||||
{
|
||||
CGLRendererInfoObj info = 0;
|
||||
GLint vram_megabytes = 0;
|
||||
GLint vram_megabytes = 0;
|
||||
int num_renderers = 0;
|
||||
CGLError the_err = CGLQueryRendererInfo (CGDisplayIDToOpenGLDisplayMask(kCGDirectMainDisplay), &info, &num_renderers);
|
||||
if(0 == the_err)
|
||||
|
|
@ -132,29 +132,29 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
vram_megabytes = 256;
|
||||
}
|
||||
|
||||
return (unsigned long)vram_megabytes; // return value is in megabytes.
|
||||
return (unsigned long)vram_megabytes; // return value is in megabytes.
|
||||
}
|
||||
|
||||
- (void)viewDidMoveToWindow
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(windowResized:) name:NSWindowDidResizeNotification
|
||||
object:[self window]];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(windowResized:) name:NSWindowDidResizeNotification
|
||||
object:[self window]];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(windowWillMiniaturize:) name:NSWindowWillMiniaturizeNotification
|
||||
object:[self window]];
|
||||
selector:@selector(windowWillMiniaturize:) name:NSWindowWillMiniaturizeNotification
|
||||
object:[self window]];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification
|
||||
object:[self window]];
|
||||
selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification
|
||||
object:[self window]];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification
|
||||
object:[self window]];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(windowDidChangeScreen:) name:NSWindowDidChangeScreenNotification
|
||||
object:[self window]];
|
||||
selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification
|
||||
object:[self window]];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(windowDidChangeScreen:) name:NSWindowDidChangeScreenNotification
|
||||
object:[self window]];
|
||||
|
||||
|
||||
NSRect wnd_rect = [[self window] frame];
|
||||
|
|
@ -188,28 +188,28 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
-(void)windowDidChangeScreen:(NSNotification *)notification;
|
||||
{
|
||||
callWindowDidChangeScreen();
|
||||
callWindowDidChangeScreen();
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
[super dealloc];
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (id) init
|
||||
{
|
||||
return [self initWithFrame:[self bounds] withSamples:2 andVsync:TRUE];
|
||||
return [self initWithFrame:[self bounds] withSamples:2 andVsync:TRUE];
|
||||
}
|
||||
|
||||
- (id) initWithSamples:(NSUInteger)samples
|
||||
{
|
||||
return [self initWithFrame:[self bounds] withSamples:samples andVsync:TRUE];
|
||||
return [self initWithFrame:[self bounds] withSamples:samples andVsync:TRUE];
|
||||
}
|
||||
|
||||
- (id) initWithSamples:(NSUInteger)samples andVsync:(BOOL)vsync
|
||||
{
|
||||
return [self initWithFrame:[self bounds] withSamples:samples andVsync:vsync];
|
||||
return [self initWithFrame:[self bounds] withSamples:samples andVsync:vsync];
|
||||
}
|
||||
|
||||
#if LL_DARWIN
|
||||
|
|
@ -221,90 +221,90 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
- (id) initWithFrame:(NSRect)frame withSamples:(NSUInteger)samples andVsync:(BOOL)vsync
|
||||
{
|
||||
[self registerForDraggedTypes:[NSArray arrayWithObject:NSPasteboardTypeURL]];
|
||||
[self initWithFrame:frame];
|
||||
[self initWithFrame:frame];
|
||||
|
||||
// Initialize with a default "safe" pixel format that will work with versions dating back to OS X 10.6.
|
||||
// Any specialized pixel formats, i.e. a core profile pixel format, should be initialized through rebuildContextWithFormat.
|
||||
// 10.7 and 10.8 don't really care if we're defining a profile or not. If we don't explicitly request a core or legacy profile, it'll always assume a legacy profile (for compatibility reasons).
|
||||
NSOpenGLPixelFormatAttribute attrs[] = {
|
||||
// Initialize with a default "safe" pixel format that will work with versions dating back to OS X 10.6.
|
||||
// Any specialized pixel formats, i.e. a core profile pixel format, should be initialized through rebuildContextWithFormat.
|
||||
// 10.7 and 10.8 don't really care if we're defining a profile or not. If we don't explicitly request a core or legacy profile, it'll always assume a legacy profile (for compatibility reasons).
|
||||
NSOpenGLPixelFormatAttribute attrs[] = {
|
||||
NSOpenGLPFANoRecovery,
|
||||
NSOpenGLPFADoubleBuffer,
|
||||
NSOpenGLPFAClosestPolicy,
|
||||
NSOpenGLPFAAccelerated,
|
||||
NSOpenGLPFASampleBuffers, 0,
|
||||
NSOpenGLPFASamples, 0,
|
||||
NSOpenGLPFAStencilSize, 8,
|
||||
NSOpenGLPFADepthSize, 24,
|
||||
NSOpenGLPFAAlphaSize, 8,
|
||||
NSOpenGLPFAColorSize, 24,
|
||||
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
|
||||
0
|
||||
NSOpenGLPFADoubleBuffer,
|
||||
NSOpenGLPFAClosestPolicy,
|
||||
NSOpenGLPFAAccelerated,
|
||||
NSOpenGLPFASampleBuffers, 0,
|
||||
NSOpenGLPFASamples, 0,
|
||||
NSOpenGLPFAStencilSize, 8,
|
||||
NSOpenGLPFADepthSize, 24,
|
||||
NSOpenGLPFAAlphaSize, 8,
|
||||
NSOpenGLPFAColorSize, 24,
|
||||
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
|
||||
0
|
||||
};
|
||||
|
||||
NSOpenGLPixelFormat *pixelFormat = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs] autorelease];
|
||||
NSOpenGLPixelFormat *pixelFormat = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs] autorelease];
|
||||
|
||||
if (pixelFormat == nil)
|
||||
{
|
||||
NSLog(@"Failed to create pixel format!", nil);
|
||||
return nil;
|
||||
}
|
||||
if (pixelFormat == nil)
|
||||
{
|
||||
NSLog(@"Failed to create pixel format!", nil);
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSOpenGLContext *glContext = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil];
|
||||
NSOpenGLContext *glContext = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil];
|
||||
|
||||
if (glContext == nil)
|
||||
{
|
||||
NSLog(@"Failed to create OpenGL context!", nil);
|
||||
return nil;
|
||||
}
|
||||
if (glContext == nil)
|
||||
{
|
||||
NSLog(@"Failed to create OpenGL context!", nil);
|
||||
return nil;
|
||||
}
|
||||
|
||||
[self setPixelFormat:pixelFormat];
|
||||
[self setPixelFormat:pixelFormat];
|
||||
|
||||
//for retina support
|
||||
[self setWantsBestResolutionOpenGLSurface:gHiDPISupport];
|
||||
//for retina support
|
||||
[self setWantsBestResolutionOpenGLSurface:gHiDPISupport];
|
||||
|
||||
[self setOpenGLContext:glContext];
|
||||
[self setOpenGLContext:glContext];
|
||||
|
||||
[glContext setView:self];
|
||||
[glContext setView:self];
|
||||
|
||||
[glContext makeCurrentContext];
|
||||
[glContext makeCurrentContext];
|
||||
|
||||
if (vsync)
|
||||
{
|
||||
GLint value = 1;
|
||||
if (vsync)
|
||||
{
|
||||
GLint value = 1;
|
||||
[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;
|
||||
} 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:NSOpenGLContextParameterSwapInterval];
|
||||
}
|
||||
}
|
||||
|
||||
return self;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (BOOL) rebuildContext
|
||||
{
|
||||
return [self rebuildContextWithFormat:[self pixelFormat]];
|
||||
return [self rebuildContextWithFormat:[self pixelFormat]];
|
||||
}
|
||||
|
||||
- (BOOL) rebuildContextWithFormat:(NSOpenGLPixelFormat *)format
|
||||
{
|
||||
NSOpenGLContext *ctx = [self openGLContext];
|
||||
NSOpenGLContext *ctx = [self openGLContext];
|
||||
|
||||
[ctx clearDrawable];
|
||||
[ctx initWithFormat:format shareContext:nil];
|
||||
[ctx clearDrawable];
|
||||
[ctx initWithFormat:format shareContext:nil];
|
||||
|
||||
if (ctx == nil)
|
||||
{
|
||||
NSLog(@"Failed to create OpenGL context!", nil);
|
||||
return false;
|
||||
}
|
||||
if (ctx == nil)
|
||||
{
|
||||
NSLog(@"Failed to create OpenGL context!", nil);
|
||||
return false;
|
||||
}
|
||||
|
||||
[self setOpenGLContext:ctx];
|
||||
[ctx setView:self];
|
||||
[ctx makeCurrentContext];
|
||||
return true;
|
||||
[self setOpenGLContext:ctx];
|
||||
[ctx setView:self];
|
||||
[ctx makeCurrentContext];
|
||||
return true;
|
||||
}
|
||||
|
||||
#if LL_DARWIN
|
||||
|
|
@ -313,14 +313,14 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (CGLContextObj)getCGLContextObj
|
||||
{
|
||||
NSOpenGLContext *ctx = [self openGLContext];
|
||||
return (CGLContextObj)[ctx CGLContextObj];
|
||||
NSOpenGLContext *ctx = [self openGLContext];
|
||||
return (CGLContextObj)[ctx CGLContextObj];
|
||||
}
|
||||
|
||||
- (CGLPixelFormatObj*)getCGLPixelFormatObj
|
||||
{
|
||||
NSOpenGLPixelFormat *fmt = [self pixelFormat];
|
||||
return (CGLPixelFormatObj*)[fmt CGLPixelFormatObj];
|
||||
NSOpenGLPixelFormat *fmt = [self pixelFormat];
|
||||
return (CGLPixelFormatObj*)[fmt CGLPixelFormatObj];
|
||||
}
|
||||
|
||||
// Various events can be intercepted by our view, thus not reaching our window.
|
||||
|
|
@ -365,29 +365,29 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (void) rightMouseDown:(NSEvent *)theEvent
|
||||
{
|
||||
callRightMouseDown(mMousePos, [theEvent modifierFlags]);
|
||||
callRightMouseDown(mMousePos, [theEvent modifierFlags]);
|
||||
}
|
||||
|
||||
- (void) rightMouseUp:(NSEvent *)theEvent
|
||||
{
|
||||
callRightMouseUp(mMousePos, [theEvent modifierFlags]);
|
||||
callRightMouseUp(mMousePos, [theEvent modifierFlags]);
|
||||
}
|
||||
|
||||
- (void)mouseMoved:(NSEvent *)theEvent
|
||||
{
|
||||
NSPoint dev_delta = [self convertPointToBacking:NSMakePoint([theEvent deltaX], [theEvent deltaY])];
|
||||
|
||||
float mouseDeltas[] = {
|
||||
float(dev_delta.x),
|
||||
float(dev_delta.y)
|
||||
};
|
||||
float mouseDeltas[] = {
|
||||
float(dev_delta.x),
|
||||
float(dev_delta.y)
|
||||
};
|
||||
|
||||
callDeltaUpdate(mouseDeltas, 0);
|
||||
callDeltaUpdate(mouseDeltas, 0);
|
||||
|
||||
NSPoint mPoint = [self convertPointToBacking:[theEvent locationInWindow]];
|
||||
mMousePos[0] = mPoint.x;
|
||||
mMousePos[1] = mPoint.y;
|
||||
callMouseMoved(mMousePos, 0);
|
||||
mMousePos[0] = mPoint.x;
|
||||
mMousePos[1] = mPoint.y;
|
||||
callMouseMoved(mMousePos, 0);
|
||||
}
|
||||
|
||||
// NSWindow doesn't trigger mouseMoved when the mouse is being clicked and dragged.
|
||||
|
|
@ -395,23 +395,23 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (void) mouseDragged:(NSEvent *)theEvent
|
||||
{
|
||||
// Trust the deltas supplied by NSEvent.
|
||||
// The old CoreGraphics APIs we previously relied on are now flagged as obsolete.
|
||||
// NSEvent isn't obsolete, and provides us with the correct deltas.
|
||||
// Trust the deltas supplied by NSEvent.
|
||||
// The old CoreGraphics APIs we previously relied on are now flagged as obsolete.
|
||||
// NSEvent isn't obsolete, and provides us with the correct deltas.
|
||||
|
||||
NSPoint dev_delta = [self convertPointToBacking:NSMakePoint([theEvent deltaX], [theEvent deltaY])];
|
||||
|
||||
float mouseDeltas[] = {
|
||||
float(dev_delta.x),
|
||||
float(dev_delta.y)
|
||||
};
|
||||
float mouseDeltas[] = {
|
||||
float(dev_delta.x),
|
||||
float(dev_delta.y)
|
||||
};
|
||||
|
||||
callDeltaUpdate(mouseDeltas, 0);
|
||||
callDeltaUpdate(mouseDeltas, 0);
|
||||
|
||||
NSPoint mPoint = [self convertPointToBacking:[theEvent locationInWindow]];
|
||||
mMousePos[0] = mPoint.x;
|
||||
mMousePos[1] = mPoint.y;
|
||||
callMouseDragged(mMousePos, 0);
|
||||
NSPoint mPoint = [self convertPointToBacking:[theEvent locationInWindow]];
|
||||
mMousePos[0] = mPoint.x;
|
||||
mMousePos[1] = mPoint.y;
|
||||
callMouseDragged(mMousePos, 0);
|
||||
}
|
||||
|
||||
- (void) otherMouseDown:(NSEvent *)theEvent
|
||||
|
|
@ -426,29 +426,29 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (void) rightMouseDragged:(NSEvent *)theEvent
|
||||
{
|
||||
[self mouseDragged:theEvent];
|
||||
[self mouseDragged:theEvent];
|
||||
}
|
||||
|
||||
- (void) otherMouseDragged:(NSEvent *)theEvent
|
||||
{
|
||||
[self mouseDragged:theEvent];
|
||||
[self mouseDragged:theEvent];
|
||||
}
|
||||
|
||||
- (void) scrollWheel:(NSEvent *)theEvent
|
||||
{
|
||||
callScrollMoved(-[theEvent deltaX], -[theEvent deltaY]);
|
||||
callScrollMoved(-[theEvent deltaX], -[theEvent deltaY]);
|
||||
}
|
||||
|
||||
- (void) mouseExited:(NSEvent *)theEvent
|
||||
{
|
||||
callMouseExit();
|
||||
callMouseExit();
|
||||
}
|
||||
|
||||
- (void) keyUp:(NSEvent *)theEvent
|
||||
{
|
||||
NativeKeyEventData eventData = extractKeyDataFromKeyEvent(theEvent);
|
||||
eventData.mKeyEvent = NativeKeyEventData::KEYUP;
|
||||
callKeyUp(&eventData, [theEvent keyCode], [theEvent modifierFlags]);
|
||||
callKeyUp(&eventData, [theEvent keyCode], [theEvent modifierFlags]);
|
||||
}
|
||||
|
||||
- (void) keyDown:(NSEvent *)theEvent
|
||||
|
|
@ -462,7 +462,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
// Because flagsChange event handler misses event when other window is activated,
|
||||
// e.g. OS Window for upload something or Input Window...
|
||||
// mModifiers instance variable is for insertText: or insertText:replacementRange: (by Pell Smit)
|
||||
mModifiers = [theEvent modifierFlags];
|
||||
mModifiers = [theEvent modifierFlags];
|
||||
NSString *str_no_modifiers = [theEvent charactersIgnoringModifiers];
|
||||
unichar ch = 0;
|
||||
if (str_no_modifiers.length)
|
||||
|
|
@ -490,8 +490,8 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
{
|
||||
NativeKeyEventData eventData = extractKeyDataFromModifierEvent(theEvent);
|
||||
|
||||
mModifiers = [theEvent modifierFlags];
|
||||
callModifier([theEvent modifierFlags]);
|
||||
mModifiers = [theEvent modifierFlags];
|
||||
callModifier([theEvent modifierFlags]);
|
||||
|
||||
NSInteger mask = 0;
|
||||
switch([theEvent keyCode])
|
||||
|
|
@ -532,69 +532,69 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (BOOL) acceptsFirstResponder
|
||||
{
|
||||
return YES;
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (NSDragOperation) draggingEntered:(id<NSDraggingInfo>)sender
|
||||
{
|
||||
NSPasteboard *pboard;
|
||||
NSPasteboard *pboard;
|
||||
NSDragOperation sourceDragMask;
|
||||
|
||||
sourceDragMask = [sender draggingSourceOperationMask];
|
||||
sourceDragMask = [sender draggingSourceOperationMask];
|
||||
|
||||
pboard = [sender draggingPasteboard];
|
||||
pboard = [sender draggingPasteboard];
|
||||
|
||||
if ([[pboard types] containsObject:NSPasteboardTypeURL])
|
||||
{
|
||||
if (sourceDragMask & NSDragOperationLink) {
|
||||
NSURL *fileUrl = [[pboard readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]] options:[NSDictionary dictionary]] objectAtIndex:0];
|
||||
mLastDraggedUrl = [[fileUrl absoluteString] UTF8String];
|
||||
{
|
||||
if (sourceDragMask & NSDragOperationLink) {
|
||||
NSURL *fileUrl = [[pboard readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]] options:[NSDictionary dictionary]] objectAtIndex:0];
|
||||
mLastDraggedUrl = [[fileUrl absoluteString] UTF8String];
|
||||
return NSDragOperationLink;
|
||||
}
|
||||
}
|
||||
return NSDragOperationNone;
|
||||
}
|
||||
return NSDragOperationNone;
|
||||
}
|
||||
|
||||
- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender
|
||||
{
|
||||
callHandleDragUpdated(mLastDraggedUrl);
|
||||
callHandleDragUpdated(mLastDraggedUrl);
|
||||
|
||||
return NSDragOperationLink;
|
||||
return NSDragOperationLink;
|
||||
}
|
||||
|
||||
- (void) draggingExited:(id<NSDraggingInfo>)sender
|
||||
{
|
||||
callHandleDragExited(mLastDraggedUrl);
|
||||
callHandleDragExited(mLastDraggedUrl);
|
||||
}
|
||||
|
||||
- (BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender
|
||||
{
|
||||
return YES;
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL) performDragOperation:(id<NSDraggingInfo>)sender
|
||||
{
|
||||
callHandleDragDropped(mLastDraggedUrl);
|
||||
return true;
|
||||
callHandleDragDropped(mLastDraggedUrl);
|
||||
return true;
|
||||
}
|
||||
|
||||
- (BOOL)hasMarkedText
|
||||
{
|
||||
return mHasMarkedText;
|
||||
return mHasMarkedText;
|
||||
}
|
||||
|
||||
- (NSRange)markedRange
|
||||
{
|
||||
int range[2];
|
||||
getPreeditMarkedRange(&range[0], &range[1]);
|
||||
return NSMakeRange(range[0], range[1]);
|
||||
int range[2];
|
||||
getPreeditMarkedRange(&range[0], &range[1]);
|
||||
return NSMakeRange(range[0], range[1]);
|
||||
}
|
||||
|
||||
- (NSRange)selectedRange
|
||||
{
|
||||
int range[2];
|
||||
getPreeditSelectionRange(&range[0], &range[1]);
|
||||
return NSMakeRange(range[0], range[1]);
|
||||
int range[2];
|
||||
getPreeditSelectionRange(&range[0], &range[1]);
|
||||
return NSMakeRange(range[0], range[1]);
|
||||
}
|
||||
|
||||
- (void)setMarkedText:(id)aString selectedRange:(NSRange)selectedRange replacementRange:(NSRange)replacementRange
|
||||
|
|
@ -680,21 +680,21 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (void)unmarkText
|
||||
{
|
||||
[[self inputContext] discardMarkedText];
|
||||
resetPreedit();
|
||||
mHasMarkedText = FALSE;
|
||||
[[self inputContext] discardMarkedText];
|
||||
resetPreedit();
|
||||
mHasMarkedText = FALSE;
|
||||
}
|
||||
|
||||
// We don't support attributed strings.
|
||||
- (NSArray *)validAttributesForMarkedText
|
||||
{
|
||||
return [NSArray array];
|
||||
return [NSArray array];
|
||||
}
|
||||
|
||||
// See above.
|
||||
- (NSAttributedString *)attributedSubstringForProposedRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange
|
||||
{
|
||||
return nil;
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)insertText:(id)insertString
|
||||
|
|
@ -707,9 +707,9 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (void)insertText:(id)aString replacementRange:(NSRange)replacementRange
|
||||
{
|
||||
// SL-19801 Special workaround for system emoji picker
|
||||
if ([aString length] == 2)
|
||||
{
|
||||
// SL-19801 Special workaround for system emoji picker
|
||||
if ([aString length] == 2)
|
||||
{
|
||||
@try
|
||||
{
|
||||
uint32_t b0 = [aString characterAtIndex:0];
|
||||
|
|
@ -727,7 +727,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
NSLog(@"Encountered an unsupported attributed character. Exception: %@ String: %@", e.name, aString);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@try
|
||||
{
|
||||
|
|
@ -760,36 +760,36 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
if (!(mModifiers & NSEventModifierFlagCommand) &&
|
||||
!(mModifiers & NSEventModifierFlagShift) &&
|
||||
!(mModifiers & NSEventModifierFlagOption))
|
||||
{
|
||||
callUnicodeCallback(13, 0);
|
||||
} else {
|
||||
callUnicodeCallback(13, mModifiers);
|
||||
}
|
||||
{
|
||||
callUnicodeCallback(13, 0);
|
||||
} else {
|
||||
callUnicodeCallback(13, mModifiers);
|
||||
}
|
||||
}
|
||||
|
||||
- (NSUInteger)characterIndexForPoint:(NSPoint)aPoint
|
||||
{
|
||||
return NSNotFound;
|
||||
return NSNotFound;
|
||||
}
|
||||
|
||||
- (NSRect)firstRectForCharacterRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange
|
||||
{
|
||||
float pos[4] = {0, 0, 0, 0};
|
||||
getPreeditLocation(pos, mMarkedTextLength);
|
||||
return NSMakeRect(pos[0], pos[1], pos[2], pos[3]);
|
||||
float pos[4] = {0, 0, 0, 0};
|
||||
getPreeditLocation(pos, mMarkedTextLength);
|
||||
return NSMakeRect(pos[0], pos[1], pos[2], pos[3]);
|
||||
}
|
||||
|
||||
- (void)doCommandBySelector:(SEL)aSelector
|
||||
{
|
||||
if (aSelector == @selector(insertNewline:))
|
||||
{
|
||||
[self insertNewline:self];
|
||||
}
|
||||
if (aSelector == @selector(insertNewline:))
|
||||
{
|
||||
[self insertNewline:self];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)drawsVerticallyForCharacterAtIndex:(NSUInteger)charIndex
|
||||
{
|
||||
return NO;
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void) allowMarkedTextInput:(bool)allowed
|
||||
|
|
@ -824,7 +824,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (void) setGLView:(LLOpenGLView *)view
|
||||
{
|
||||
glview = view;
|
||||
glview = view;
|
||||
}
|
||||
|
||||
- (void)keyDown:(NSEvent *)theEvent
|
||||
|
|
@ -875,24 +875,24 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (id) init
|
||||
{
|
||||
return self;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (BOOL) becomeFirstResponder
|
||||
{
|
||||
callFocus();
|
||||
return true;
|
||||
callFocus();
|
||||
return true;
|
||||
}
|
||||
|
||||
- (BOOL) resignFirstResponder
|
||||
{
|
||||
callFocusLost();
|
||||
return true;
|
||||
callFocusLost();
|
||||
return true;
|
||||
}
|
||||
|
||||
- (void) close
|
||||
{
|
||||
callQuitHandler();
|
||||
callQuitHandler();
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -41,15 +41,15 @@
|
|||
|
||||
int createNSApp(int argc, const char *argv[])
|
||||
{
|
||||
return NSApplicationMain(argc, argv);
|
||||
return NSApplicationMain(argc, argv);
|
||||
}
|
||||
|
||||
void setupCocoa()
|
||||
{
|
||||
static bool inited = false;
|
||||
static bool inited = false;
|
||||
|
||||
if(!inited)
|
||||
{
|
||||
if(!inited)
|
||||
{
|
||||
@autoreleasepool {
|
||||
// The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents.
|
||||
// ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr'
|
||||
|
|
@ -57,8 +57,8 @@ void setupCocoa()
|
|||
[[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"];
|
||||
}
|
||||
|
||||
inited = true;
|
||||
}
|
||||
inited = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool copyToPBoard(const unsigned short *str, unsigned int len)
|
||||
|
|
@ -74,8 +74,8 @@ bool copyToPBoard(const unsigned short *str, unsigned int len)
|
|||
|
||||
bool pasteBoardAvailable()
|
||||
{
|
||||
NSArray *classArray = [NSArray arrayWithObject:[NSString class]];
|
||||
return [[NSPasteboard generalPasteboard] canReadObjectForClasses:classArray options:[NSDictionary dictionary]];
|
||||
NSArray *classArray = [NSArray arrayWithObject:[NSString class]];
|
||||
return [[NSPasteboard generalPasteboard] canReadObjectForClasses:classArray options:[NSDictionary dictionary]];
|
||||
}
|
||||
|
||||
unsigned short *copyFromPBoard()
|
||||
|
|
@ -112,54 +112,54 @@ CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY)
|
|||
] retain];
|
||||
}
|
||||
|
||||
return (CursorRef)cursor;
|
||||
return (CursorRef)cursor;
|
||||
}
|
||||
|
||||
void setArrowCursor()
|
||||
{
|
||||
NSCursor *cursor = [NSCursor arrowCursor];
|
||||
[NSCursor unhide];
|
||||
[cursor set];
|
||||
NSCursor *cursor = [NSCursor arrowCursor];
|
||||
[NSCursor unhide];
|
||||
[cursor set];
|
||||
}
|
||||
|
||||
void setIBeamCursor()
|
||||
{
|
||||
NSCursor *cursor = [NSCursor IBeamCursor];
|
||||
[cursor set];
|
||||
NSCursor *cursor = [NSCursor IBeamCursor];
|
||||
[cursor set];
|
||||
}
|
||||
|
||||
void setPointingHandCursor()
|
||||
{
|
||||
NSCursor *cursor = [NSCursor pointingHandCursor];
|
||||
[cursor set];
|
||||
NSCursor *cursor = [NSCursor pointingHandCursor];
|
||||
[cursor set];
|
||||
}
|
||||
|
||||
void setCopyCursor()
|
||||
{
|
||||
NSCursor *cursor = [NSCursor dragCopyCursor];
|
||||
[cursor set];
|
||||
NSCursor *cursor = [NSCursor dragCopyCursor];
|
||||
[cursor set];
|
||||
}
|
||||
|
||||
void setCrossCursor()
|
||||
{
|
||||
NSCursor *cursor = [NSCursor crosshairCursor];
|
||||
[cursor set];
|
||||
NSCursor *cursor = [NSCursor crosshairCursor];
|
||||
[cursor set];
|
||||
}
|
||||
|
||||
void setNotAllowedCursor()
|
||||
{
|
||||
NSCursor *cursor = [NSCursor operationNotAllowedCursor];
|
||||
[cursor set];
|
||||
NSCursor *cursor = [NSCursor operationNotAllowedCursor];
|
||||
[cursor set];
|
||||
}
|
||||
|
||||
void hideNSCursor()
|
||||
{
|
||||
[NSCursor hide];
|
||||
[NSCursor hide];
|
||||
}
|
||||
|
||||
void showNSCursor()
|
||||
{
|
||||
[NSCursor unhide];
|
||||
[NSCursor unhide];
|
||||
}
|
||||
|
||||
#if LL_DARWIN
|
||||
|
|
@ -179,42 +179,42 @@ bool isCGCursorVisible()
|
|||
|
||||
void hideNSCursorTillMove(bool hide)
|
||||
{
|
||||
[NSCursor setHiddenUntilMouseMoves:hide];
|
||||
[NSCursor setHiddenUntilMouseMoves:hide];
|
||||
}
|
||||
|
||||
// This is currently unused, since we want all our cursors to persist for the life of the app, but I've included it for completeness.
|
||||
OSErr releaseImageCursor(CursorRef ref)
|
||||
{
|
||||
if( ref != NULL )
|
||||
{
|
||||
if( ref != NULL )
|
||||
{
|
||||
@autoreleasepool {
|
||||
NSCursor *cursor = (NSCursor*)ref;
|
||||
[cursor autorelease];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return paramErr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return paramErr;
|
||||
}
|
||||
|
||||
return noErr;
|
||||
return noErr;
|
||||
}
|
||||
|
||||
OSErr setImageCursor(CursorRef ref)
|
||||
{
|
||||
if( ref != NULL )
|
||||
{
|
||||
if( ref != NULL )
|
||||
{
|
||||
@autoreleasepool {
|
||||
NSCursor *cursor = (NSCursor*)ref;
|
||||
[cursor set];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return paramErr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return paramErr;
|
||||
}
|
||||
|
||||
return noErr;
|
||||
return noErr;
|
||||
}
|
||||
|
||||
// Now for some unholy juggling between generic pointers and casting them to Obj-C objects!
|
||||
|
|
@ -222,46 +222,46 @@ OSErr setImageCursor(CursorRef ref)
|
|||
|
||||
NSWindowRef createNSWindow(int x, int y, int width, int height)
|
||||
{
|
||||
LLNSWindow *window = [[LLNSWindow alloc]initWithContentRect:NSMakeRect(x, y, width, height)
|
||||
LLNSWindow *window = [[LLNSWindow alloc]initWithContentRect:NSMakeRect(x, y, width, height)
|
||||
styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskResizable | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable
|
||||
backing:NSBackingStoreBuffered defer:NO];
|
||||
[window makeKeyAndOrderFront:nil];
|
||||
[window setAcceptsMouseMovedEvents:TRUE];
|
||||
[window makeKeyAndOrderFront:nil];
|
||||
[window setAcceptsMouseMovedEvents:TRUE];
|
||||
[window setRestorable:FALSE]; // Viewer manages state from own settings
|
||||
return window;
|
||||
return window;
|
||||
}
|
||||
|
||||
GLViewRef createOpenGLView(NSWindowRef window, unsigned int samples, bool vsync)
|
||||
{
|
||||
LLOpenGLView *glview = [[LLOpenGLView alloc]initWithFrame:[(LLNSWindow*)window frame] withSamples:samples andVsync:vsync];
|
||||
[(LLNSWindow*)window setContentView:glview];
|
||||
return glview;
|
||||
LLOpenGLView *glview = [[LLOpenGLView alloc]initWithFrame:[(LLNSWindow*)window frame] withSamples:samples andVsync:vsync];
|
||||
[(LLNSWindow*)window setContentView:glview];
|
||||
return glview;
|
||||
}
|
||||
|
||||
void glSwapBuffers(void* context)
|
||||
{
|
||||
[(NSOpenGLContext*)context flushBuffer];
|
||||
[(NSOpenGLContext*)context flushBuffer];
|
||||
}
|
||||
|
||||
CGLContextObj getCGLContextObj(GLViewRef view)
|
||||
{
|
||||
return [(LLOpenGLView *)view getCGLContextObj];
|
||||
return [(LLOpenGLView *)view getCGLContextObj];
|
||||
}
|
||||
|
||||
CGLPixelFormatObj* getCGLPixelFormatObj(NSWindowRef window)
|
||||
{
|
||||
LLOpenGLView *glview = [(LLNSWindow*)window contentView];
|
||||
return [glview getCGLPixelFormatObj];
|
||||
LLOpenGLView *glview = [(LLNSWindow*)window contentView];
|
||||
return [glview getCGLPixelFormatObj];
|
||||
}
|
||||
|
||||
unsigned long getVramSize(GLViewRef view)
|
||||
{
|
||||
return [(LLOpenGLView *)view getVramSize];
|
||||
return [(LLOpenGLView *)view getVramSize];
|
||||
}
|
||||
|
||||
float getDeviceUnitSize(GLViewRef view)
|
||||
{
|
||||
return [(LLOpenGLView*)view convertSizeToBacking:NSMakeSize(1, 1)].width;
|
||||
return [(LLOpenGLView*)view convertSizeToBacking:NSMakeSize(1, 1)].width;
|
||||
}
|
||||
|
||||
CGRect getContentViewRect(NSWindowRef window)
|
||||
|
|
@ -276,48 +276,48 @@ CGRect getBackingViewRect(NSWindowRef window, GLViewRef view)
|
|||
|
||||
void getWindowSize(NSWindowRef window, float* size)
|
||||
{
|
||||
NSRect frame = [(LLNSWindow*)window frame];
|
||||
size[0] = frame.origin.x;
|
||||
size[1] = frame.origin.y;
|
||||
size[2] = frame.size.width;
|
||||
size[3] = frame.size.height;
|
||||
NSRect frame = [(LLNSWindow*)window frame];
|
||||
size[0] = frame.origin.x;
|
||||
size[1] = frame.origin.y;
|
||||
size[2] = frame.size.width;
|
||||
size[3] = frame.size.height;
|
||||
}
|
||||
|
||||
void setWindowSize(NSWindowRef window, int width, int height)
|
||||
{
|
||||
NSRect frame = [(LLNSWindow*)window frame];
|
||||
frame.size.width = width;
|
||||
frame.size.height = height;
|
||||
[(LLNSWindow*)window setFrame:frame display:TRUE];
|
||||
NSRect frame = [(LLNSWindow*)window frame];
|
||||
frame.size.width = width;
|
||||
frame.size.height = height;
|
||||
[(LLNSWindow*)window setFrame:frame display:TRUE];
|
||||
}
|
||||
|
||||
void setWindowPos(NSWindowRef window, float* pos)
|
||||
{
|
||||
NSPoint point;
|
||||
point.x = pos[0];
|
||||
point.y = pos[1];
|
||||
[(LLNSWindow*)window setFrameOrigin:point];
|
||||
NSPoint point;
|
||||
point.x = pos[0];
|
||||
point.y = pos[1];
|
||||
[(LLNSWindow*)window setFrameOrigin:point];
|
||||
}
|
||||
|
||||
void getCursorPos(NSWindowRef window, float* pos)
|
||||
{
|
||||
NSPoint mLoc;
|
||||
mLoc = [(LLNSWindow*)window mouseLocationOutsideOfEventStream];
|
||||
pos[0] = mLoc.x;
|
||||
pos[1] = mLoc.y;
|
||||
NSPoint mLoc;
|
||||
mLoc = [(LLNSWindow*)window mouseLocationOutsideOfEventStream];
|
||||
pos[0] = mLoc.x;
|
||||
pos[1] = mLoc.y;
|
||||
}
|
||||
|
||||
void makeWindowOrderFront(NSWindowRef window)
|
||||
{
|
||||
[(LLNSWindow*)window makeKeyAndOrderFront:nil];
|
||||
[(LLNSWindow*)window makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
||||
void convertScreenToWindow(NSWindowRef window, float *coord)
|
||||
{
|
||||
NSRect point = NSMakeRect(coord[0], coord[1], 0,0);
|
||||
point = [(LLNSWindow*)window convertRectFromScreen:point];
|
||||
coord[0] = point.origin.x;
|
||||
coord[1] = point.origin.y;
|
||||
point = [(LLNSWindow*)window convertRectFromScreen:point];
|
||||
coord[0] = point.origin.x;
|
||||
coord[1] = point.origin.y;
|
||||
}
|
||||
|
||||
void convertRectToScreen(NSWindowRef window, float *coord)
|
||||
|
|
@ -325,21 +325,21 @@ void convertRectToScreen(NSWindowRef window, float *coord)
|
|||
NSRect rect = NSMakeRect(coord[0], coord[1], coord[2], coord[3]);;
|
||||
rect = [(LLNSWindow*)window convertRectToScreen:rect];
|
||||
|
||||
coord[0] = rect.origin.x;
|
||||
coord[1] = rect.origin.y;
|
||||
coord[2] = rect.size.width;
|
||||
coord[3] = rect.size.height;
|
||||
coord[0] = rect.origin.x;
|
||||
coord[1] = rect.origin.y;
|
||||
coord[2] = rect.size.width;
|
||||
coord[3] = rect.size.height;
|
||||
}
|
||||
|
||||
void convertRectFromScreen(NSWindowRef window, float *coord)
|
||||
{
|
||||
NSRect point = NSMakeRect(coord[0], coord[1], coord[2], coord[3]);
|
||||
point = [(LLNSWindow*)window convertRectFromScreen:point];
|
||||
NSRect point = NSMakeRect(coord[0], coord[1], coord[2], coord[3]);
|
||||
point = [(LLNSWindow*)window convertRectFromScreen:point];
|
||||
|
||||
coord[0] = point.origin.x;
|
||||
coord[1] = point.origin.y;
|
||||
coord[2] = point.size.width;
|
||||
coord[3] = point.size.height;
|
||||
coord[0] = point.origin.x;
|
||||
coord[1] = point.origin.y;
|
||||
coord[2] = point.size.width;
|
||||
coord[3] = point.size.height;
|
||||
}
|
||||
|
||||
void convertWindowToScreen(NSWindowRef window, float *coord)
|
||||
|
|
@ -353,24 +353,24 @@ void convertWindowToScreen(NSWindowRef window, float *coord)
|
|||
|
||||
void closeWindow(NSWindowRef window)
|
||||
{
|
||||
[(LLNSWindow*)window close];
|
||||
[(LLNSWindow*)window release];
|
||||
[(LLNSWindow*)window close];
|
||||
[(LLNSWindow*)window release];
|
||||
}
|
||||
|
||||
void removeGLView(GLViewRef view)
|
||||
{
|
||||
[(LLOpenGLView*)view clearGLContext];
|
||||
[(LLOpenGLView*)view removeFromSuperview];
|
||||
[(LLOpenGLView*)view clearGLContext];
|
||||
[(LLOpenGLView*)view removeFromSuperview];
|
||||
}
|
||||
|
||||
void setupInputWindow(NSWindowRef window, GLViewRef glview)
|
||||
{
|
||||
[[(LLAppDelegate*)[NSApp delegate] inputView] setGLView:(LLOpenGLView*)glview];
|
||||
[[(LLAppDelegate*)[NSApp delegate] inputView] setGLView:(LLOpenGLView*)glview];
|
||||
}
|
||||
|
||||
void commitCurrentPreedit(GLViewRef glView)
|
||||
{
|
||||
[(LLOpenGLView*)glView commitCurrentPreedit];
|
||||
[(LLOpenGLView*)glView commitCurrentPreedit];
|
||||
}
|
||||
|
||||
void allowDirectMarkedTextInput(bool allow, GLViewRef glView)
|
||||
|
|
@ -380,20 +380,20 @@ void allowDirectMarkedTextInput(bool allow, GLViewRef glView)
|
|||
|
||||
NSWindowRef getMainAppWindow()
|
||||
{
|
||||
LLNSWindow *winRef = [(LLAppDelegate*)[[NSApplication sharedApplication] delegate] window];
|
||||
LLNSWindow *winRef = [(LLAppDelegate*)[[NSApplication sharedApplication] delegate] window];
|
||||
|
||||
[winRef setAcceptsMouseMovedEvents:TRUE];
|
||||
return winRef;
|
||||
[winRef setAcceptsMouseMovedEvents:TRUE];
|
||||
return winRef;
|
||||
}
|
||||
|
||||
void makeFirstResponder(NSWindowRef window, GLViewRef view)
|
||||
{
|
||||
[(LLNSWindow*)window makeFirstResponder:(LLOpenGLView*)view];
|
||||
[(LLNSWindow*)window makeFirstResponder:(LLOpenGLView*)view];
|
||||
}
|
||||
|
||||
void requestUserAttention()
|
||||
{
|
||||
[[NSApplication sharedApplication] requestUserAttention:NSInformationalRequest];
|
||||
[[NSApplication sharedApplication] requestUserAttention:NSInformationalRequest];
|
||||
}
|
||||
|
||||
long showAlert(std::string text, std::string title, int type)
|
||||
|
|
@ -451,5 +451,5 @@ long showAlert(std::string text, std::string title, int type)
|
|||
|
||||
unsigned int getModifiers()
|
||||
{
|
||||
return [NSEvent modifierFlags];
|
||||
return [NSEvent modifierFlags];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,42 +57,42 @@
|
|||
|
||||
- (void) applicationDidFinishLaunching:(NSNotification *)notification
|
||||
{
|
||||
// Call constructViewer() first so our logging subsystem is in place. This
|
||||
// risks missing crashes in the LLAppViewerMacOSX constructor, but for
|
||||
// present purposes it's more important to get the startup sequence
|
||||
// properly logged.
|
||||
// Someday I would like to modify the logging system so that calls before
|
||||
// it's initialized are cached in a std::ostringstream and then, once it's
|
||||
// initialized, "played back" into whatever handlers have been set up.
|
||||
constructViewer();
|
||||
// Call constructViewer() first so our logging subsystem is in place. This
|
||||
// risks missing crashes in the LLAppViewerMacOSX constructor, but for
|
||||
// present purposes it's more important to get the startup sequence
|
||||
// properly logged.
|
||||
// Someday I would like to modify the logging system so that calls before
|
||||
// it's initialized are cached in a std::ostringstream and then, once it's
|
||||
// initialized, "played back" into whatever handlers have been set up.
|
||||
constructViewer();
|
||||
|
||||
#if defined(LL_BUGSPLAT)
|
||||
infos("bugsplat setup");
|
||||
// Engage BugsplatStartupManager *before* calling initViewer() to handle
|
||||
// any crashes during initialization.
|
||||
// https://www.bugsplat.com/docs/platforms/os-x#initialization
|
||||
[BugsplatStartupManager sharedManager].autoSubmitCrashReport = YES;
|
||||
[BugsplatStartupManager sharedManager].askUserDetails = NO;
|
||||
[BugsplatStartupManager sharedManager].delegate = self;
|
||||
[[BugsplatStartupManager sharedManager] start];
|
||||
// Engage BugsplatStartupManager *before* calling initViewer() to handle
|
||||
// any crashes during initialization.
|
||||
// https://www.bugsplat.com/docs/platforms/os-x#initialization
|
||||
[BugsplatStartupManager sharedManager].autoSubmitCrashReport = YES;
|
||||
[BugsplatStartupManager sharedManager].askUserDetails = NO;
|
||||
[BugsplatStartupManager sharedManager].delegate = self;
|
||||
[[BugsplatStartupManager sharedManager] start];
|
||||
#endif
|
||||
infos("post-bugsplat setup");
|
||||
|
||||
frameTimer = nil;
|
||||
frameTimer = nil;
|
||||
|
||||
[self languageUpdated];
|
||||
[self languageUpdated];
|
||||
|
||||
if (initViewer())
|
||||
{
|
||||
// Set up recurring calls to oneFrame (repeating timer with timeout 0)
|
||||
// until applicationShouldTerminate.
|
||||
frameTimer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self
|
||||
selector:@selector(oneFrame) userInfo:nil repeats:YES];
|
||||
} else {
|
||||
exit(0);
|
||||
}
|
||||
if (initViewer())
|
||||
{
|
||||
// Set up recurring calls to oneFrame (repeating timer with timeout 0)
|
||||
// until applicationShouldTerminate.
|
||||
frameTimer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self
|
||||
selector:@selector(oneFrame) userInfo:nil repeats:YES];
|
||||
} else {
|
||||
exit(0);
|
||||
}
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageUpdated) name:@"NSTextInputContextKeyboardSelectionDidChangeNotification" object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageUpdated) name:@"NSTextInputContextKeyboardSelectionDidChangeNotification" object:nil];
|
||||
|
||||
// [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
|
||||
}
|
||||
|
|
@ -110,74 +110,74 @@
|
|||
|
||||
- (void) applicationDidBecomeActive:(NSNotification *)notification
|
||||
{
|
||||
callWindowFocus();
|
||||
callWindowFocus();
|
||||
}
|
||||
|
||||
- (void) applicationDidResignActive:(NSNotification *)notification
|
||||
{
|
||||
callWindowUnfocus();
|
||||
callWindowUnfocus();
|
||||
}
|
||||
|
||||
- (void) applicationDidHide:(NSNotification *)notification
|
||||
{
|
||||
callWindowHide();
|
||||
callWindowHide();
|
||||
}
|
||||
|
||||
- (void) applicationDidUnhide:(NSNotification *)notification
|
||||
{
|
||||
callWindowUnhide();
|
||||
callWindowUnhide();
|
||||
}
|
||||
|
||||
- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *)sender
|
||||
{
|
||||
// run one frame to assess state
|
||||
if (!pumpMainLoop())
|
||||
{
|
||||
// pumpMainLoop() returns true when done, false if it wants to be
|
||||
// called again. Since it returned false, do not yet cancel
|
||||
// frameTimer.
|
||||
handleQuit();
|
||||
[[NSApplication sharedApplication] stopModal];
|
||||
return NSTerminateCancel;
|
||||
} else {
|
||||
// pumpMainLoop() returned true: it's done. Okay, done with frameTimer.
|
||||
[frameTimer release];
|
||||
cleanupViewer();
|
||||
return NSTerminateNow;
|
||||
}
|
||||
// run one frame to assess state
|
||||
if (!pumpMainLoop())
|
||||
{
|
||||
// pumpMainLoop() returns true when done, false if it wants to be
|
||||
// called again. Since it returned false, do not yet cancel
|
||||
// frameTimer.
|
||||
handleQuit();
|
||||
[[NSApplication sharedApplication] stopModal];
|
||||
return NSTerminateCancel;
|
||||
} else {
|
||||
// pumpMainLoop() returned true: it's done. Okay, done with frameTimer.
|
||||
[frameTimer release];
|
||||
cleanupViewer();
|
||||
return NSTerminateNow;
|
||||
}
|
||||
}
|
||||
|
||||
- (void) oneFrame
|
||||
{
|
||||
bool appExiting = pumpMainLoop();
|
||||
if (appExiting)
|
||||
{
|
||||
// Once pumpMainLoop() reports that we're done, cancel frameTimer:
|
||||
// stop the repetitive calls.
|
||||
[frameTimer release];
|
||||
[[NSApplication sharedApplication] terminate:self];
|
||||
}
|
||||
bool appExiting = pumpMainLoop();
|
||||
if (appExiting)
|
||||
{
|
||||
// Once pumpMainLoop() reports that we're done, cancel frameTimer:
|
||||
// stop the repetitive calls.
|
||||
[frameTimer release];
|
||||
[[NSApplication sharedApplication] terminate:self];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) showInputWindow:(bool)show withEvent:(NSEvent*)textEvent
|
||||
{
|
||||
if (![self romanScript])
|
||||
{
|
||||
if (show)
|
||||
{
|
||||
NSLog(@"Showing input window.");
|
||||
[inputWindow makeKeyAndOrderFront:inputWindow];
|
||||
if (![self romanScript])
|
||||
{
|
||||
if (show)
|
||||
{
|
||||
NSLog(@"Showing input window.");
|
||||
[inputWindow makeKeyAndOrderFront:inputWindow];
|
||||
if (textEvent != nil)
|
||||
{
|
||||
[[inputView inputContext] discardMarkedText];
|
||||
[[inputView inputContext] handleEvent:textEvent];
|
||||
}
|
||||
} else {
|
||||
NSLog(@"Hiding input window.");
|
||||
[inputWindow orderOut:inputWindow];
|
||||
[window makeKeyAndOrderFront:window];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
NSLog(@"Hiding input window.");
|
||||
[inputWindow orderOut:inputWindow];
|
||||
[window makeKeyAndOrderFront:window];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This will get called multiple times by NSNotificationCenter.
|
||||
|
|
@ -187,15 +187,15 @@
|
|||
|
||||
- (void) languageUpdated
|
||||
{
|
||||
TISInputSourceRef currentInput = TISCopyCurrentKeyboardInputSource();
|
||||
CFArrayRef languages = (CFArrayRef)TISGetInputSourceProperty(currentInput, kTISPropertyInputSourceLanguages);
|
||||
TISInputSourceRef currentInput = TISCopyCurrentKeyboardInputSource();
|
||||
CFArrayRef languages = (CFArrayRef)TISGetInputSourceProperty(currentInput, kTISPropertyInputSourceLanguages);
|
||||
|
||||
#if 0 // In the event of ever needing to add new language sources, change this to 1 and watch the terminal for "languages:"
|
||||
NSLog(@"languages: %@", TISGetInputSourceProperty(currentInput, kTISPropertyInputSourceLanguages));
|
||||
NSLog(@"languages: %@", TISGetInputSourceProperty(currentInput, kTISPropertyInputSourceLanguages));
|
||||
#endif
|
||||
|
||||
// Typically the language we want is going to be the very first result in the array.
|
||||
currentInputLanguage = (NSString*)CFArrayGetValueAtIndex(languages, 0);
|
||||
// Typically the language we want is going to be the very first result in the array.
|
||||
currentInputLanguage = (NSString*)CFArrayGetValueAtIndex(languages, 0);
|
||||
}
|
||||
|
||||
- (bool) romanScript
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
*/
|
||||
|
||||
#if !defined LL_DARWIN
|
||||
#error "Use only with macOS"
|
||||
#error "Use only with macOS"
|
||||
#endif
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ std::unique_ptr<std::vector<std::string>> doLoadDialog(const std::vector<std::st
|
|||
std::unique_ptr<std::vector<std::string>> outfiles;
|
||||
|
||||
@autoreleasepool
|
||||
{
|
||||
{
|
||||
int result;
|
||||
//Aura TODO: We could init a small window and release it at the end of this routine
|
||||
//for a modeless interface.
|
||||
|
|
@ -113,7 +113,7 @@ void doLoadDialogModeless(const std::vector<std::string>* allowed_types,
|
|||
{
|
||||
|
||||
@autoreleasepool
|
||||
{
|
||||
{
|
||||
// Note: might need to return and save this panel
|
||||
// so that it does not close immediately
|
||||
NSOpenPanel *panel = init_panel(allowed_types,flags);
|
||||
|
|
@ -157,7 +157,7 @@ std::unique_ptr<std::string> doSaveDialog(const std::string* file,
|
|||
{
|
||||
std::unique_ptr<std::string> outfile;
|
||||
@autoreleasepool
|
||||
{
|
||||
{
|
||||
NSSavePanel *panel = [NSSavePanel savePanel];
|
||||
|
||||
NSString *extensionns = [NSString stringWithCString:extension->c_str() encoding:[NSString defaultCStringEncoding]];
|
||||
|
|
@ -193,39 +193,39 @@ void doSaveDialogModeless(const std::string* file,
|
|||
void *userdata)
|
||||
{
|
||||
@autoreleasepool {
|
||||
NSSavePanel *panel = [NSSavePanel savePanel];
|
||||
NSSavePanel *panel = [NSSavePanel savePanel];
|
||||
|
||||
NSString *extensionns = [NSString stringWithCString:extension->c_str() encoding:[NSString defaultCStringEncoding]];
|
||||
NSArray *fileType = [extensionns componentsSeparatedByString:@","];
|
||||
NSString *extensionns = [NSString stringWithCString:extension->c_str() encoding:[NSString defaultCStringEncoding]];
|
||||
NSArray *fileType = [extensionns componentsSeparatedByString:@","];
|
||||
|
||||
//[panel setMessage:@"Save Image File"];
|
||||
[panel setTreatsFilePackagesAsDirectories: ( flags & F_NAV_SUPPORT ) ];
|
||||
[panel setCanSelectHiddenExtension:true];
|
||||
[panel setAllowedFileTypes:fileType];
|
||||
NSString *fileName = [NSString stringWithCString:file->c_str() encoding:[NSString defaultCStringEncoding]];
|
||||
//[panel setMessage:@"Save Image File"];
|
||||
[panel setTreatsFilePackagesAsDirectories: ( flags & F_NAV_SUPPORT ) ];
|
||||
[panel setCanSelectHiddenExtension:true];
|
||||
[panel setAllowedFileTypes:fileType];
|
||||
NSString *fileName = [NSString stringWithCString:file->c_str() encoding:[NSString defaultCStringEncoding]];
|
||||
|
||||
NSURL* url = [NSURL fileURLWithPath:fileName];
|
||||
[panel setNameFieldStringValue: fileName];
|
||||
[panel setDirectoryURL: url];
|
||||
NSURL* url = [NSURL fileURLWithPath:fileName];
|
||||
[panel setNameFieldStringValue: fileName];
|
||||
[panel setDirectoryURL: url];
|
||||
|
||||
|
||||
[panel beginWithCompletionHandler:^(NSModalResponse result)
|
||||
{
|
||||
[panel beginWithCompletionHandler:^(NSModalResponse result)
|
||||
{
|
||||
if (result == NSModalResponseOK)
|
||||
{
|
||||
NSURL* url = [panel URL];
|
||||
NSString* p = [url path];
|
||||
std::string outfile([p UTF8String]);
|
||||
{
|
||||
NSURL* url = [panel URL];
|
||||
NSString* p = [url path];
|
||||
std::string outfile([p UTF8String]);
|
||||
|
||||
callback(true, outfile, userdata);
|
||||
}
|
||||
else // cancel
|
||||
{
|
||||
std::string outfile;
|
||||
callback(false, outfile, userdata);
|
||||
}
|
||||
}];
|
||||
}
|
||||
callback(true, outfile, userdata);
|
||||
}
|
||||
else // cancel
|
||||
{
|
||||
std::string outfile;
|
||||
callback(false, outfile, userdata);
|
||||
}
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ def process_directory(directory, extensions, tab_stop):
|
|||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Convert tabs to spaces in files, considering tab stops.')
|
||||
parser.add_argument('-e', '--extensions', type=str, default='c,cpp,h,hpp,inl,py,glsl,cmake', help='Comma-separated list of file extensions to process (default: "c,cpp,h,hpp,inl,py,glsl,cmake")')
|
||||
parser.add_argument('-e', '--extensions', type=str, default='c,cpp,m,mm,h,hpp,inl,py,glsl,cmake', help='Comma-separated list of file extensions to process (default: "c,cpp,h,hpp,inl,py,glsl,cmake")')
|
||||
parser.add_argument('-t', '--tabstop', type=int, default=4, help='Tab stop size (default: 4)')
|
||||
parser.add_argument('-d', '--directory', type=str, required=True, help='Directory to process')
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue