X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fmisc.m;h=b466c6f905b3a2a24775043a91aebd175f8f4151;hb=6ee1e193fd896ab9a4729fde14f009d9ce629815;hp=b61c60107a2d9a463cd453b395fb8863d22fe368;hpb=144e4cc2d6cca2f7cdfd44ddd035b1faf9d79248;p=vlc diff --git a/modules/gui/macosx/misc.m b/modules/gui/macosx/misc.m index b61c60107a..b466c6f905 100644 --- a/modules/gui/macosx/misc.m +++ b/modules/gui/macosx/misc.m @@ -80,7 +80,7 @@ static NSMutableArray *blackoutWindows = NULL; + (NSScreen *)screenWithDisplayID: (CGDirectDisplayID)displayID { int i; - + for( i = 0; i < [[NSScreen screens] count]; i++ ) { NSScreen *screen = [[NSScreen screens] objectAtIndex: i]; @@ -95,6 +95,11 @@ static NSMutableArray *blackoutWindows = NULL; return ([self displayID] == [[[NSScreen screens] objectAtIndex:0] displayID]); } +- (BOOL)isScreen: (NSScreen*)screen +{ + return ([self displayID] == [screen displayID]); +} + - (CGDirectDisplayID)displayID { return (CGDirectDisplayID)_screenNumber; @@ -108,21 +113,28 @@ static NSMutableArray *blackoutWindows = NULL; [blackoutWindows makeObjectsPerformSelector:@selector(close)]; [blackoutWindows removeAllObjects]; - + for(i = 0; i < [[NSScreen screens] count]; i++) { - VLCWindow *blackoutWindow; NSScreen *screen = [[NSScreen screens] objectAtIndex: i]; - if(self == screen) + VLCWindow *blackoutWindow; + NSRect screen_rect; + + if([self isScreen: screen]) continue; + + screen_rect = [screen frame]; + screen_rect.origin.x = screen_rect.origin.y = 0.0f; + /* blackoutWindow alloc strategy - The NSMutableArray blackoutWindows has the blackoutWindow references - blackoutOtherDisplays is responsible for alloc/releasing its Windows */ - blackoutWindow = [[VLCWindow alloc] initWithContentRect: [screen frame] styleMask: NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; + blackoutWindow = [[VLCWindow alloc] initWithContentRect: screen_rect styleMask: NSBorderlessWindowMask + backing: NSBackingStoreBuffered defer: NO screen: screen]; [blackoutWindow setBackgroundColor:[NSColor blackColor]]; [blackoutWindow setLevel: NSFloatingWindowLevel]; /* Disappear when Expose is triggered */ - + [blackoutWindow orderFront: self animate: YES]; [blackoutWindows addObject: blackoutWindow]; @@ -175,7 +187,7 @@ static NSMutableArray *blackoutWindows = NULL; - (void)closeAndAnimate: (BOOL)animate { NSInvocation *invoc; - + if (!animate || MACOS_VERSION < 10.4f) { [super close]; @@ -256,7 +268,7 @@ static NSMutableArray *blackoutWindows = NULL; NSViewAnimation *anim; NSViewAnimation *current_anim; NSMutableDictionary *dict; - + if (!animate || MACOS_VERSION < 10.4f) { [super orderFront: sender]; @@ -278,11 +290,11 @@ static NSMutableArray *blackoutWindows = NULL; dict = [[NSMutableDictionary alloc] initWithCapacity:2]; [dict setObject:self forKey:NSViewAnimationTargetKey]; - + [dict setObject:NSViewAnimationFadeInEffect forKey:NSViewAnimationEffectKey]; anim = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict, nil]]; [dict release]; - + [anim setAnimationBlockingMode:NSAnimationNonblocking]; [anim setDuration:0.5]; [anim setFrameRate:30]; @@ -380,13 +392,13 @@ static NSMutableArray *blackoutWindows = NULL; - (void)awakeFromNib { - [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType, + [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType, NSFilenamesPboardType, nil]]; } - (NSDragOperation)draggingEntered:(id )sender { - if ((NSDragOperationGeneric & [sender draggingSourceOperationMask]) + if ((NSDragOperationGeneric & [sender draggingSourceOperationMask]) == NSDragOperationGeneric) { return NSDragOperationGeneric; @@ -467,13 +479,13 @@ static NSMutableArray *blackoutWindows = NULL; - (void)awakeFromNib { - [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType, + [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType, NSFilenamesPboardType, nil]]; } - (NSDragOperation)draggingEntered:(id )sender { - if ((NSDragOperationGeneric & [sender draggingSourceOperationMask]) + if ((NSDragOperationGeneric & [sender draggingSourceOperationMask]) == NSDragOperationGeneric) { return NSDragOperationGeneric; @@ -541,7 +553,7 @@ void _drawKnobInRect(NSRect knobRect) // Center knob in given rect knobRect.origin.x += (int)((float)(knobRect.size.width - 7)/2.0); knobRect.origin.y += (int)((float)(knobRect.size.height - 7)/2.0); - + // Draw diamond NSRectFillUsingOperation(NSMakeRect(knobRect.origin.x + 3, knobRect.origin.y + 6, 1, 1), NSCompositeSourceOver); NSRectFillUsingOperation(NSMakeRect(knobRect.origin.x + 2, knobRect.origin.y + 5, 3, 1), NSCompositeSourceOver); @@ -568,7 +580,7 @@ void _drawFrameInRect(NSRect frameRect) NSRectClip(NSZeroRect); [super drawRect:rect]; [[NSGraphicsContext currentContext] restoreGraphicsState]; - + // Full size rect = [self bounds]; int diff = (int)(([[self cell] knobThickness] - 7.0)/2.0) - 1; @@ -576,13 +588,13 @@ void _drawFrameInRect(NSRect frameRect) rect.origin.y += diff; rect.size.width -= 2*diff-2; rect.size.height -= 2*diff; - + // Draw dark NSRect knobRect = [[self cell] knobRectFlipped:NO]; [[[NSColor blackColor] colorWithAlphaComponent:0.6] set]; _drawFrameInRect(rect); _drawKnobInRect(knobRect); - + // Draw shadow [[[NSColor blackColor] colorWithAlphaComponent:0.1] set]; rect.origin.x++; @@ -613,7 +625,7 @@ void _drawFrameInRect(NSRect frameRect) [newCell setAction:[oldCell action]]; [newCell setControlSize:[oldCell controlSize]]; [newCell setType:[oldCell type]]; - [newCell setState:[oldCell state]]; + [newCell setState:[oldCell state]]; [newCell setAllowsTickMarkValuesOnly:[oldCell allowsTickMarkValuesOnly]]; [newCell setAltIncrementValue:[oldCell altIncrementValue]]; [newCell setControlTint:[oldCell controlTint]]; @@ -665,12 +677,12 @@ void _drawFrameInRect(NSRect frameRect) [[self controlView] lockFocus]; [knob compositeToPoint:NSMakePoint( knob_rect.origin.x + 1, - knob_rect.origin.y + knob_rect.size.height -2 ) + knob_rect.origin.y + knob_rect.size.height -2 ) operation:NSCompositeSourceOver]; [[self controlView] unlockFocus]; } -- (void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView: +- (void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView: (NSView *)controlView mouseIsUp:(BOOL)flag { b_mouse_down = NO;