fix cursor visibility in OSX
This commit is contained in:
@@ -45,6 +45,14 @@ std::mutex task_mutex;
|
||||
{
|
||||
[[NSApplication sharedApplication] terminate:nil];
|
||||
}
|
||||
- (void)show_cursor:(bool)visible
|
||||
{
|
||||
if (cursor_visible == visible)
|
||||
return;
|
||||
cursor_visible = visible;
|
||||
if (cursor_inside)
|
||||
visible ? [NSCursor unhide] : [NSCursor hide];
|
||||
}
|
||||
- (std::string)pick_file:(NSArray<NSString*>*)types
|
||||
{
|
||||
NSOpenPanel *panel = [NSOpenPanel openPanel];
|
||||
@@ -107,6 +115,8 @@ std::mutex task_mutex;
|
||||
airdrop_service = [NSSharingService sharingServiceNamed:NSSharingServiceNameSendViaAirDrop];
|
||||
airdrop_service.delegate = self;
|
||||
gl_ready = false;
|
||||
cursor_visible = CGCursorIsVisible();
|
||||
cursor_inside = false;
|
||||
NSOpenGLPixelFormatAttribute attrs[] =
|
||||
{
|
||||
NSOpenGLPFADoubleBuffer,
|
||||
@@ -125,7 +135,7 @@ std::mutex task_mutex;
|
||||
[self setPixelFormat:pf];
|
||||
[self setOpenGLContext:context];
|
||||
|
||||
self->trackingArea = [[NSTrackingArea alloc] initWithRect:frameRect
|
||||
trackingArea = [[NSTrackingArea alloc] initWithRect:frameRect
|
||||
options: (NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingActiveInKeyWindow )
|
||||
owner:self userInfo:nil];
|
||||
[self addTrackingArea:trackingArea];
|
||||
@@ -268,9 +278,9 @@ static CVReturn MyDisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTime
|
||||
}
|
||||
- (void)updateTrackingAreas
|
||||
{
|
||||
if(self->trackingArea != nil)
|
||||
[self removeTrackingArea:self->trackingArea];
|
||||
self->trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
|
||||
if(trackingArea != nil)
|
||||
[self removeTrackingArea:trackingArea];
|
||||
trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
|
||||
options: (NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingActiveInKeyWindow)
|
||||
owner:self userInfo:nil];
|
||||
[self addTrackingArea:trackingArea];
|
||||
@@ -389,14 +399,15 @@ static CVReturn MyDisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTime
|
||||
}
|
||||
-(void)mouseExited:(NSEvent *)event
|
||||
{
|
||||
self->cursor_visible = CGCursorIsVisible();
|
||||
if (!self->cursor_visible)
|
||||
if (!cursor_visible)
|
||||
[NSCursor unhide];
|
||||
cursor_inside = false;
|
||||
}
|
||||
-(void)mouseEntered:(NSEvent *)event
|
||||
{
|
||||
if (!self->cursor_visible)
|
||||
if (!cursor_visible)
|
||||
[NSCursor hide];
|
||||
cursor_inside = true;
|
||||
}
|
||||
- (void)scrollWheel:(NSEvent *)theEvent
|
||||
{
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
_CGLContextObject* cgl;
|
||||
bool gl_ready;
|
||||
bool cursor_visible;
|
||||
bool cursor_inside;
|
||||
NSTrackingArea* trackingArea;
|
||||
@public NSString* file2open;
|
||||
}
|
||||
@@ -29,4 +30,5 @@
|
||||
- (std::string)pick_dir;
|
||||
- (void)share_file:(NSString*)file_path;
|
||||
- (void)hockeyapp_crash;
|
||||
- (void)show_cursor:(bool)visible;
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user