diff --git a/npapi/vlcplugin_mac.mm b/npapi/vlcplugin_mac.mm index 97451848eeb99faaaa26d702dbeebf77f28f010f..c4c600c7b56de5571729bc918d0a1dbf3a63c197 100644 --- a/npapi/vlcplugin_mac.mm +++ b/npapi/vlcplugin_mac.mm @@ -9,6 +9,7 @@ * Jean-Baptiste Kempf * James Bates * Pierre d'Herbemont + * David Fuhrmann * * * This program is free software; you can redistribute it and/or modify @@ -99,6 +100,12 @@ @end +@interface NSScreen (VLCAdditions) +- (BOOL)hasMenuBar; +- (BOOL)hasDock; +- (CGDirectDisplayID)displayID; +@end + static CALayer * rootLayer; static VLCPlaybackLayer * playbackLayer; static VLCNoMediaLayer * noMediaLayer; @@ -736,6 +743,35 @@ static CGImageRef createImageNamed(NSString *name) @end +@implementation NSScreen (VLCAdditions) + +- (BOOL)hasMenuBar +{ + return ([self displayID] == [[[NSScreen screens] objectAtIndex:0] displayID]); +} + +- (BOOL)hasDock +{ + NSRect screen_frame = [self frame]; + NSRect screen_visible_frame = [self visibleFrame]; + CGFloat f_menu_bar_thickness = [self hasMenuBar] ? [[NSStatusBar systemStatusBar] thickness] : 0.0; + + BOOL b_found_dock = NO; + if (screen_visible_frame.size.width < screen_frame.size.width) + b_found_dock = YES; + else if (screen_visible_frame.size.height + f_menu_bar_thickness < screen_frame.size.height) + b_found_dock = YES; + + return b_found_dock; +} + +- (CGDirectDisplayID)displayID +{ + return (CGDirectDisplayID)[[[self deviceDescription] objectForKey: @"NSScreenNumber"] intValue]; +} + +@end + @implementation VLCFullscreenWindow - (id)initWithContentRect:(NSRect)contentRect