]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/Windows.m
macosx: add custom numberformatter to goto time field to only allow digits and :
[vlc] / modules / gui / macosx / Windows.m
index dfbeb819af7c012b11d4775128657f80dc30f0ac..dc15ad9391e2e379b8d6b65c2b9921130b169c70 100644 (file)
     [dict setObject:self forKey:NSViewAnimationTargetKey];
 
     [dict setObject:NSViewAnimationFadeOutEffect forKey:NSViewAnimationEffectKey];
-    anim = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict, nil]];
+    anim = [[NSViewAnimation alloc] initWithViewAnimations:@[dict]];
     [dict release];
 
     [anim setAnimationBlockingMode:NSAnimationNonblocking];
     @synchronized(self) {
         current_anim = self->o_current_animation;
 
-        if ([[[current_anim viewAnimations] objectAtIndex:0] objectForKey: NSViewAnimationEffectKey] == NSViewAnimationFadeOutEffect && [current_anim isAnimating]) {
+        if ([[current_anim viewAnimations][0] objectForKey: NSViewAnimationEffectKey] == NSViewAnimationFadeOutEffect && [current_anim isAnimating]) {
             [anim release];
         } else {
             if (current_anim) {
     [dict setObject:self forKey:NSViewAnimationTargetKey];
 
     [dict setObject:NSViewAnimationFadeInEffect forKey:NSViewAnimationEffectKey];
-    anim = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict, nil]];
+    anim = [[NSViewAnimation alloc] initWithViewAnimations:@[dict]];
     [dict release];
 
     [anim setAnimationBlockingMode:NSAnimationNonblocking];
     @synchronized(self) {
         current_anim = self->o_current_animation;
 
-        if ([[[current_anim viewAnimations] objectAtIndex:0] objectForKey: NSViewAnimationEffectKey] == NSViewAnimationFadeInEffect && [current_anim isAnimating]) {
+        if ([[current_anim viewAnimations][0] objectForKey: NSViewAnimationEffectKey] == NSViewAnimationFadeInEffect && [current_anim isAnimating]) {
             [anim release];
         } else {
             if (current_anim) {
         }
     }
 
-    [o_video_view setFrame: [[self contentView] frame]];
+    if ([self hasActiveVideo])
+        [[VLCMainWindow sharedInstance] recreateHideMouseTimer];
 
-    [[VLCMainWindow sharedInstance] recreateHideMouseTimer];
     i_originalLevel = [self level];
     [[[VLCMain sharedInstance] voutController] updateWindowLevelForHelperWindows: NSNormalWindowLevel];
     [self setLevel:NSNormalWindowLevel];
         [self setFrame: winrect display:NO animate:NO];
     }
 
-    // TODO fix bottom bar status when vout just not visible, but there
-    if (![o_video_view isHidden])
+    [o_video_view setFrame: [[self contentView] frame]];
+    if (![o_video_view isHidden]) {
         [[o_controls_bar bottomBarView] setHidden: YES];
+    }
+    
 
     [self setMovableByWindowBackground: NO];
 }
 
     if ([self hasActiveVideo]) {
         [[[VLCMainWindow sharedInstance] fsPanel] setVoutWasUpdated: self];
-        [[[VLCMainWindow sharedInstance] fsPanel] setActive: nil];
+        if (![o_video_view isHidden])
+            [[[VLCMainWindow sharedInstance] fsPanel] setActive: nil];
     }
 
     NSArray *subviews = [[self videoView] subviews];
     NSUInteger count = [subviews count];
 
     for (NSUInteger x = 0; x < count; x++) {
-        if ([[subviews objectAtIndex:x] respondsToSelector:@selector(reshape)])
-            [[subviews objectAtIndex:x] reshape];
+        if ([subviews[x] respondsToSelector:@selector(reshape)])
+            [subviews[x] reshape];
     }
 
 }
     if (b_dark_interface) {
         NSRect winrect;
         CGFloat f_titleBarHeight = [o_titlebar_view frame].size.height;
-        winrect = [self frame];
 
+        winrect = [o_video_view frame];
+        winrect.size.height -= f_titleBarHeight;
+        [o_video_view setFrame: winrect];
+
+        winrect = [self frame];
         [o_titlebar_view setFrame: NSMakeRect(0, winrect.size.height - f_titleBarHeight,
                                               winrect.size.width, f_titleBarHeight)];
         [[self contentView] addSubview: o_titlebar_view];
 
         winrect.size.height = winrect.size.height + f_titleBarHeight;
         [self setFrame: winrect display:NO animate:NO];
-        winrect = [o_video_view frame];
-        winrect.size.height -= f_titleBarHeight;
-        [o_video_view setFrame: winrect];
     }
 
     NSRect videoViewFrame = [o_video_view frame];
-    videoViewFrame.origin.y = [[o_controls_bar bottomBarView] frame].size.height;
-    videoViewFrame.size.height -= [[o_controls_bar bottomBarView] frame].size.height;
+    videoViewFrame.origin.y += [o_controls_bar height];
+    videoViewFrame.size.height -= [o_controls_bar height];
     [o_video_view setFrame: videoViewFrame];
-    [[o_controls_bar bottomBarView] setHidden: NO];
+
+    if (![o_video_view isHidden]) {
+        [[o_controls_bar bottomBarView] setHidden: NO];
+    }
     
     [self setMovableByWindowBackground: YES];
 }
                 CGDisplayFade(token, 0.5, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0, 0, 0, YES);
             }
 
-            NSApplicationPresentationOptions presentationOpts = [NSApp presentationOptions];
-            if ([screen hasMenuBar])
-                presentationOpts |= NSApplicationPresentationAutoHideMenuBar;
-            if ([screen hasMenuBar] || [screen hasDock])
-                presentationOpts |= NSApplicationPresentationAutoHideDock;
-            [NSApp setPresentationOptions:presentationOpts];
+            [screen setFullscreenPresentationOptions];
 
             [[o_video_view superview] replaceSubview:o_video_view with:o_temp_view];
             [o_temp_view setFrame:[o_video_view frame]];
         [o_fullscreen_anim2 release];
     }
 
-    NSApplicationPresentationOptions presentationOpts = [NSApp presentationOptions];
-    if ([screen hasMenuBar])
-        presentationOpts |= NSApplicationPresentationAutoHideMenuBar;
-    if ([screen hasMenuBar] || [screen hasDock])
-        presentationOpts |= NSApplicationPresentationAutoHideDock;
-    [NSApp setPresentationOptions:presentationOpts];
+    [screen setFullscreenPresentationOptions];
 
     dict1 = [[NSMutableDictionary alloc] initWithCapacity:2];
     dict2 = [[NSMutableDictionary alloc] initWithCapacity:3];
      - Keep at most 2 animation at a time
      - leaveFullscreen/enterFullscreen are the only responsible for releasing and alloc-ing
      */
-    o_fullscreen_anim1 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict1]];
-    o_fullscreen_anim2 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict2]];
+    o_fullscreen_anim1 = [[NSViewAnimation alloc] initWithViewAnimations:@[dict1]];
+    o_fullscreen_anim2 = [[NSViewAnimation alloc] initWithViewAnimations:@[dict2]];
 
     [dict1 release];
     [dict2 release];
 - (void)hasBecomeFullscreen
 {
     if ([[o_video_view subviews] count] > 0)
-        [o_fullscreen_window makeFirstResponder: [[o_video_view subviews] objectAtIndex:0]];
+        [o_fullscreen_window makeFirstResponder: [o_video_view subviews][0]];
 
     [o_fullscreen_window makeKeyWindow];
     [o_fullscreen_window setAcceptsMouseMovedEvents: YES];
         }
 
         [[[VLCMainWindow sharedInstance] fsPanel] setNonActive: nil];
-        [NSApp setPresentationOptions: NSApplicationPresentationDefault];
+        [[o_fullscreen_window screen] setNonFullscreenPresentationOptions];
 
         /* Will release the lock */
         [self hasEndedFullscreen];
     [[o_video_view window] orderFront: self];
 
     [[[VLCMainWindow sharedInstance] fsPanel] setNonActive: nil];
-    [NSApp setPresentationOptions:(NSApplicationPresentationDefault)];
+    [[o_fullscreen_window screen] setNonFullscreenPresentationOptions];
 
     if (o_fullscreen_anim1) {
         [o_fullscreen_anim1 stopAnimation];
     [dict2 setObject:self forKey:NSViewAnimationTargetKey];
     [dict2 setObject:NSViewAnimationFadeInEffect forKey:NSViewAnimationEffectKey];
 
-    o_fullscreen_anim2 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict2, nil]];
+    o_fullscreen_anim2 = [[NSViewAnimation alloc] initWithViewAnimations:@[dict2]];
     [dict2 release];
 
     [o_fullscreen_anim2 setAnimationBlockingMode: NSAnimationNonblocking];
     [dict1 setObject:[NSValue valueWithRect:[o_fullscreen_window frame]] forKey:NSViewAnimationStartFrameKey];
     [dict1 setObject:[NSValue valueWithRect:frame] forKey:NSViewAnimationEndFrameKey];
 
-    o_fullscreen_anim1 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict1, nil]];
+    o_fullscreen_anim1 = [[NSViewAnimation alloc] initWithViewAnimations:@[dict1]];
     [dict1 release];
 
     [o_fullscreen_anim1 setAnimationBlockingMode: NSAnimationNonblocking];
     [o_video_view release];
     [o_video_view setFrame:[o_temp_view frame]];
     if ([[o_video_view subviews] count] > 0)
-        [self makeFirstResponder: [[o_video_view subviews] objectAtIndex:0]];
+        [self makeFirstResponder: [o_video_view subviews][0]];
 
     [super makeKeyAndOrderFront:self]; /* our version (in main window) contains a workaround */
 
     /* Fullscreen ended or started (we are a delegate only for leaveFullscreen's/enterFullscren's anim2) */
     viewAnimations = [o_fullscreen_anim2 viewAnimations];
     if ([viewAnimations count] >=1 &&
-        [[[viewAnimations objectAtIndex: 0] objectForKey: NSViewAnimationEffectKey] isEqualToString:NSViewAnimationFadeInEffect]) {
+        [[viewAnimations[0] objectForKey: NSViewAnimationEffectKey] isEqualToString:NSViewAnimationFadeInEffect]) {
         /* Fullscreen ended */
         [self hasEndedFullscreen];
     } else
     static NSMutableArray *attributes = nil;
     if (attributes == nil) {
         attributes = [[super accessibilityAttributeNames] mutableCopy];
-        NSArray *appendAttributes = [NSArray arrayWithObjects: NSAccessibilitySubroleAttribute,
-                                     NSAccessibilityCloseButtonAttribute,
-                                     NSAccessibilityMinimizeButtonAttribute,
-                                     NSAccessibilityZoomButtonAttribute,
-                                     nil];
+        NSArray *appendAttributes = @[NSAccessibilitySubroleAttribute,
+                                      NSAccessibilityCloseButtonAttribute,
+                                      NSAccessibilityMinimizeButtonAttribute,
+                                      NSAccessibilityZoomButtonAttribute];
 
         for(NSString *attribute in appendAttributes) {
             if (![attributes containsObject:attribute])