]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/Windows.h
macosx: avoid possible index out of range problem in bookmarks table view
[vlc] / modules / gui / macosx / Windows.h
index 58aac2784349dc91d51e7279ac110718f6370c17..d3dec6b9b5090c5e99cc5988b3d147d750480d69 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * Windows.h: MacOS X interface module
  *****************************************************************************
- * Copyright (C) 2012 VLC authors and VideoLAN
+ * Copyright (C) 2012-2014 VLC authors and VideoLAN
  * $Id$
  *
  * Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
@@ -23,8 +23,6 @@
  *****************************************************************************/
 
 #import <Cocoa/Cocoa.h>
-#import "CompatibilityFixes.h"
-
 
 /*****************************************************************************
  * VLCWindow
  *  Missing extension to NSWindow
  *****************************************************************************/
 
-@interface VLCWindow : NSWindow
+@class VLCVoutView;
+
+@interface VLCWindow : NSWindow <NSAnimationDelegate>
 {
     BOOL b_canBecomeKeyWindow;
     BOOL b_isset_canBecomeKeyWindow;
     BOOL b_canBecomeMainWindow;
     BOOL b_isset_canBecomeMainWindow;
     NSViewAnimation *o_current_animation;
+
+    BOOL              b_has_active_video;
+
+    /* 
+     * YES when all animations are over
+     * for fullscreen window: always YES
+     */
+    BOOL              b_fullscreen;
 }
 @property (readwrite) BOOL canBecomeKeyWindow;
 @property (readwrite) BOOL canBecomeMainWindow;
 
+@property (nonatomic, readwrite) BOOL hasActiveVideo;
+@property (nonatomic, readwrite) BOOL fullscreen;
+
 /* animate mode is only supported in >=10.4 */
 - (void)orderFront: (id)sender animate: (BOOL)animate;
 
 /* animate mode is only supported in >=10.4 */
 - (void)closeAndAnimate: (BOOL)animate;
 
+- (VLCVoutView *)videoView;
+
 @end
 
 
 static const float f_min_video_height = 70.0;
 
-@class VLCVoutView;
 @class VLCControlsBarCommon;
 
 /*****************************************************************************
@@ -69,7 +81,7 @@ static const float f_min_video_height = 70.0;
  *  Common code for main window, detached window and extra video window
  *****************************************************************************/
 
-@interface VLCVideoWindowCommon : VLCWindow <NSWindowDelegate>
+@interface VLCVideoWindowCommon : VLCWindow <NSWindowDelegate, NSAnimationDelegate>
 {
     NSRect previousSavedFrame;
     BOOL b_dark_interface;
@@ -80,14 +92,49 @@ static const float f_min_video_height = 70.0;
     IBOutlet VLCControlsBarCommon *o_controls_bar;
 
     NSSize nativeVideoSize;
+
+    // variables for fullscreen handling
+    VLCVideoWindowCommon *o_current_video_window;
+    VLCWindow       * o_fullscreen_window;
+    NSViewAnimation * o_fullscreen_anim1;
+    NSViewAnimation * o_fullscreen_anim2;
+    NSView          * o_temp_view;
+
+    NSInteger i_originalLevel;
+
+    BOOL              b_video_view_was_hidden;
+
+    NSTimer *t_hide_mouse_timer;
+
+    // true when the window is in transition for entering or exiting fullscreen
+    BOOL b_in_fullscreen_transition;
+
+    NSRect frameBeforeLionFullscreen;
+
+    BOOL b_windowShouldExitFullscreenWhenFinished;
 }
 
 @property (nonatomic, assign) VLCVoutView* videoView;
 @property (readonly) VLCControlsBarCommon* controlsBar;
+@property (readonly) BOOL inFullscreenTransition;
+@property (readonly) BOOL windowShouldExitFullscreenWhenFinished;
+
+- (void)setWindowLevel:(NSInteger)i_state;
 
 - (void)resizeWindow;
 - (void)setNativeVideoSize:(NSSize)size;
+- (NSRect)getWindowRectForProposedVideoViewSize:(NSSize)size;
+
 
 - (void)setTitle:(NSString *)title;
 
-@end
\ No newline at end of file
+/* fullscreen handling */
+- (void)enterFullscreenWithAnimation:(BOOL)b_animation;
+- (void)leaveFullscreenWithAnimation:(BOOL)b_animation;
+
+/* lion fullscreen handling */
+- (void)windowWillEnterFullScreen:(NSNotification *)notification;
+- (void)windowDidEnterFullScreen:(NSNotification *)notification;
+- (void)windowWillExitFullScreen:(NSNotification *)notification;
+
+@end