]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/fspanel.m
* forwardport: [18319], [18320]
[vlc] / modules / gui / macosx / fspanel.m
index 92208d0bdec65f63823226e3fea3861c44964eb9..6f90428bbbd5a465ce7e0b0164626fbcd7c390f8 100644 (file)
@@ -42,7 +42,7 @@
                   backing:(NSBackingStoreType)bufferingType \r
                     defer:(BOOL)flag\r
 {\r
-    id win=[super initWithContentRect:contentRect styleMask:NSTexturedBackgroundWindowMask backing:bufferingType defer:flag];\r
+    id win = [super initWithContentRect:contentRect styleMask:NSTexturedBackgroundWindowMask backing:bufferingType defer:flag];\r
     [win setOpaque:NO];\r
     [win setHasShadow: NO];\r
     [win setBackgroundColor:[NSColor clearColor]];\r
     /* let the window sit on top of everything else and start out completely transparent */\r
     [win setLevel:NSFloatingWindowLevel];\r
     [win setAlphaValue:0.0];\r
-    \r
-    /* centre the panel in the lower third of the screen */\r
-    NSPoint theCoordinate;\r
-    NSRect theScreensFrame;\r
-    NSRect theWindowsFrame;\r
-    int i_outputScreen;\r
-    \r
-    i_outputScreen = var_GetInteger( VLCIntf, "video-device" );\r
-    if( i_outputScreen <=0 || i_outputScreen > (signed int)[[NSScreen screens] count] )\r
-        /* invalid preferences or none specified, using main screen */\r
-        theScreensFrame = [[NSScreen mainScreen] frame];\r
-    else\r
-        /* user-defined screen */\r
-        theScreensFrame = [[[NSScreen screens] objectAtIndex: i_outputScreen] frame];\r
-    \r
-    theWindowsFrame = [win frame];\r
-    theCoordinate.x = (theScreensFrame.size.width - theWindowsFrame.size.width) / 2;\r
-    theCoordinate.y = (theScreensFrame.size.height / 3) - theWindowsFrame.size.height;\r
-    [win setFrameTopLeftPoint: theCoordinate];\r
+    i_device = 0;\r
+\r
+    [win center];\r
     return win;\r
 }\r
 \r
 - (void)awakeFromNib\r
 {\r
     [self setContentView:[[VLCFSPanelView alloc] initWithFrame: [self frame]]];\r
-    BOOL isInside=(NSPointInRect([NSEvent mouseLocation],[self frame]));\r
+    BOOL isInside = (NSPointInRect([NSEvent mouseLocation],[self frame]));\r
     [[self contentView] addTrackingRect:[[self contentView] bounds] owner:self userData:nil assumeInside:isInside];\r
     if (isInside)\r
-    [self mouseEntered:NULL];\r
+        [self mouseEntered:NULL];\r
     if (!isInside)\r
-    [self mouseExited:NULL];\r
+        [self mouseExited:NULL];\r
 }\r
 \r
 /* Windows created with NSBorderlessWindowMask normally can't be key, but we want ours to be */\r
     [super dealloc];\r
 }\r
 \r
+-(void)center\r
+{\r
+    /* centre the panel in the lower third of the screen */\r
+    NSPoint theCoordinate;\r
+    NSRect theScreensFrame;\r
+    NSRect theWindowsFrame;\r
+\r
+    if( i_device < 0 || i_device >= (signed int)[[NSScreen screens] count] )\r
+        /* invalid preferences or none specified, using main screen */\r
+        theScreensFrame = [[NSScreen mainScreen] frame];\r
+    else\r
+        /* user-defined screen */\r
+        theScreensFrame = [[[NSScreen screens] objectAtIndex: i_device] frame];\r
+\r
+    theWindowsFrame = [self frame];\r
+    \r
+    theCoordinate.x = (theScreensFrame.size.width - theWindowsFrame.size.width) / 2 + theScreensFrame.origin.x;\r
+    theCoordinate.y = (theScreensFrame.size.height / 3) - theWindowsFrame.size.height + theScreensFrame.origin.y;\r
+    [self setFrameTopLeftPoint: theCoordinate];\r
+}\r
+\r
 - (void)setPlay\r
 {\r
     [[self contentView] setPlay];\r
 \r
 - (void)fadeOut\r
 {\r
+    if( NSPointInRect([NSEvent mouseLocation],[self frame]))\r
+        return;\r
+\r
     if( ( [self alphaValue] > 0.0 ) )\r
     {\r
         if (![self fadeTimer])\r
     return b_displayed;\r
 }\r
 \r
-- (void)setVoutWasUpdated\r
+- (void)setVoutWasUpdated: (int)i_newdevice;\r
 {\r
     b_voutWasUpdated = YES;\r
+    if( i_newdevice != i_device )\r
+    {\r
+        i_device = i_newdevice;\r
+        [self center];\r
+    }\r
 }\r
 @end\r
 \r
 \r
 - (void)setPlay\r
 {\r
-    NSImage *image;\r
-    image = [NSImage imageNamed:@"fs_play"];\r
-    [o_play setImage:image];\r
-    image = [NSImage imageNamed:@"fs_play_highlight"];\r
-    [o_play setAlternateImage:image];\r
+    [o_play setImage:[NSImage imageNamed:@"fs_play"]];\r
+    [o_play setAlternateImage: [NSImage imageNamed:@"fs_play_highlight"]];\r
 }\r
 \r
 - (void)setPause\r
 {\r
-    NSImage *image;\r
-    image = [NSImage imageNamed:@"fs_pause"];\r
-    [o_play setImage:image];\r
-    image = [NSImage imageNamed:@"fs_pause_highlight"];\r
-    [o_play setAlternateImage:image];\r
+    [o_play setImage: [NSImage imageNamed:@"fs_pause"]];\r
+    [o_play setAlternateImage: [NSImage imageNamed:@"fs_pause_highlight"]];\r
 }\r
 \r
 - (void)setStreamTitle:(NSString *)o_title\r
     [self drawKnobInRect: knobRect];\r
 }\r
 \r
-@end
\ No newline at end of file
+@end\r
+\r