macosx: Make fscontroller compatible with <10.10
authorMarvin Scholz <epirat07@gmail.com>
Tue, 11 Oct 2016 08:17:30 +0000 (10:17 +0200)
committerMarvin Scholz <epirat07@gmail.com>
Sun, 30 Oct 2016 21:45:13 +0000 (22:45 +0100)
This will add a fallback mechanism that uses a
normal layer-backed NSView with a dark but still
slightly transparent background on macOS versions
that do not support NSVisualEffectView.

Additionally it will allow compilation with older
SDK's that have no NSVisualEffectView defined.
If compiled with such an SDK, support for
NSVisualEffectView is disabled completely, so
even when running the compiled VLC version
on 10.10 or higher it will use the old fallback
view, as the SDK it was compiled with had not the
necessary definitions.

modules/gui/macosx/CompatibilityFixes.h
modules/gui/macosx/VLCFSPanelController.m

index 4a35c1c..0c3e669 100644 (file)
@@ -32,6 +32,8 @@
 #define OSX_EL_CAPITAN (NSAppKitVersionNumber >= 1404 && NSAppKitVersionNumber < 1485)
 #define OSX_SIERRA (NSAppKitVersionNumber >= 1485)
 
+#define OSX_YOSEMITE_OR_HIGHER (NSAppKitVersionNumber >= 1334)
+
 // Sierra only APIs
 #ifndef MAC_OS_X_VERSION_10_12
 
index c74247b..2cb33e5 100644 (file)
@@ -26,6 +26,7 @@
 
 #import "VLCFSPanelController.h"
 #import "VLCCoreInteraction.h"
+#import "CompatibilityFixes.h"
 #import "VLCMain.h"
 
 @interface VLCFSPanelController () {
     [self.window setStyleMask:self.window.styleMask | NSResizableWindowMask];
     [self.window setBackgroundColor:[NSColor clearColor]];
 
+#ifdef MAC_OS_X_VERSION_10_10
     /* Inject correct background view depending on OS support */
-    [self injectVisualEffectView];
-    //[self injectBackgroundView];
+    if (OSX_YOSEMITE_OR_HIGHER) {
+        [self injectVisualEffectView];
+    } else {
+        [self injectBackgroundView];
+    }
+#else
+    /* Compiled with old SDK, always use legacy style */
+    [self injectBackgroundView];
+#endif
 
     [(NSButtonCell*)[_playPauseButton cell] setHighlightsBy:NSPushInCellMask];
     [(NSButtonCell*)[_playPauseButton cell] setShowsStateBy:NSContentsCellMask];
 #pragma mark -
 #pragma mark Helpers
 
+#ifdef MAC_OS_X_VERSION_10_10
 /**
  Create an image mask for the NSVisualEffectView
  with rounded corners in the given rect
     [_controllsView setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameVibrantDark]];
     [self.window.contentView addSubview:_controllsView];
 }
+#endif
 
 /**
  Injects the standard background view in the Windows view hierarchy