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