Marvin Scholz pushed to branch master at VideoLAN / VLC


Commits:
fc0bf353 by Claudio Cambra at 2025-08-05T22:04:31+00:00
macosx: Add outlet for stack view of audio group header

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
d427addd by Claudio Cambra at 2025-08-05T22:04:31+00:00
macosx: Replace visual effect background with glass effect view

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
ed98730b by Claudio Cambra at 2025-08-05T22:04:31+00:00
macosx: Avoid certain procedures involving appearance in audio group header 
view on macOS 26

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
69ab0a1b by Claudio Cambra at 2025-08-05T22:04:31+00:00
macosx: Build padding into stack view components of audio group header view

Fixes padding when using glass effect view

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
231f5d40 by Claudio Cambra at 2025-08-05T22:04:31+00:00
macosx: Fix build on macOS <26.0

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -


3 changed files:

- modules/gui/macosx/UI/VLCLibraryAudioGroupHeaderView.xib
- modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupHeaderView.h
- modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupHeaderView.m


Changes:

=====================================
modules/gui/macosx/UI/VLCLibraryAudioGroupHeaderView.xib
=====================================
@@ -58,7 +58,6 @@
                                         <constraint firstItem="UDD-gH-RDW" 
firstAttribute="centerY" secondItem="eE7-fJ-MtS" secondAttribute="centerY" 
id="7pl-Xu-lre"/>
                                         <constraint firstItem="Baf-bX-D7M" 
firstAttribute="centerY" secondItem="eE7-fJ-MtS" secondAttribute="centerY" 
id="AMr-ZS-8Ot"/>
                                         <constraint firstItem="UDD-gH-RDW" 
firstAttribute="width" secondItem="Baf-bX-D7M" secondAttribute="width" 
id="N5Y-W0-Y5P"/>
-                                        <constraint firstAttribute="width" 
constant="157" id="hWf-p4-ES0"/>
                                     </constraints>
                                     <visibilityPriorities>
                                         <integer value="1000"/>
@@ -89,10 +88,12 @@
                         </textField>
                     </subviews>
                     <constraints>
-                        <constraint firstItem="Yyj-ln-1hz" 
firstAttribute="leading" secondItem="0Si-IF-hfH" secondAttribute="leading" 
id="Ci0-Wg-TUY"/>
-                        <constraint firstItem="8Fd-yT-2AG" 
firstAttribute="leading" secondItem="0Si-IF-hfH" secondAttribute="leading" 
id="Kyd-AH-vSN"/>
-                        <constraint firstAttribute="trailing" 
secondItem="Yyj-ln-1hz" secondAttribute="trailing" id="LeP-os-gHu"/>
-                        <constraint firstAttribute="trailing" 
secondItem="8Fd-yT-2AG" secondAttribute="trailing" id="VyH-Uu-36X"/>
+                        <constraint firstAttribute="bottom" 
secondItem="8Fd-yT-2AG" secondAttribute="bottom" constant="10" id="8tG-XA-Dhe"/>
+                        <constraint firstItem="Yyj-ln-1hz" 
firstAttribute="leading" secondItem="0Si-IF-hfH" secondAttribute="leading" 
constant="10" id="Ci0-Wg-TUY"/>
+                        <constraint firstItem="8Fd-yT-2AG" 
firstAttribute="leading" secondItem="0Si-IF-hfH" secondAttribute="leading" 
constant="10" id="Kyd-AH-vSN"/>
+                        <constraint firstAttribute="trailing" 
secondItem="Yyj-ln-1hz" secondAttribute="trailing" constant="10" 
id="LeP-os-gHu"/>
+                        <constraint firstItem="Yyj-ln-1hz" 
firstAttribute="top" secondItem="0Si-IF-hfH" secondAttribute="top" 
constant="10" id="VPw-ku-aor"/>
+                        <constraint firstAttribute="trailing" 
secondItem="8Fd-yT-2AG" secondAttribute="trailing" constant="10" 
id="VyH-Uu-36X"/>
                     </constraints>
                     <visibilityPriorities>
                         <integer value="1000"/>
@@ -108,17 +109,18 @@
                 <constraint firstAttribute="bottom" secondItem="f5b-qJ-770" 
secondAttribute="bottom" id="CMu-pV-oNq"/>
                 <constraint firstItem="f5b-qJ-770" firstAttribute="leading" 
secondItem="E6K-GD-bgu" secondAttribute="leading" id="Enr-0y-OWJ"/>
                 <constraint firstItem="f5b-qJ-770" firstAttribute="top" 
secondItem="E6K-GD-bgu" secondAttribute="top" id="UDS-Of-f99"/>
-                <constraint firstItem="0Si-IF-hfH" firstAttribute="top" 
secondItem="E6K-GD-bgu" secondAttribute="top" constant="10" id="fw0-cv-Ofa"/>
-                <constraint firstAttribute="trailing" secondItem="0Si-IF-hfH" 
secondAttribute="trailing" constant="10" id="mM3-Iy-sSh"/>
+                <constraint firstItem="0Si-IF-hfH" firstAttribute="top" 
secondItem="E6K-GD-bgu" secondAttribute="top" id="fw0-cv-Ofa"/>
+                <constraint firstAttribute="trailing" secondItem="0Si-IF-hfH" 
secondAttribute="trailing" id="mM3-Iy-sSh"/>
                 <constraint firstAttribute="trailing" secondItem="f5b-qJ-770" 
secondAttribute="trailing" id="qxE-XE-VRb"/>
-                <constraint firstAttribute="bottom" secondItem="0Si-IF-hfH" 
secondAttribute="bottom" constant="10" id="sUV-bu-8ug"/>
-                <constraint firstItem="0Si-IF-hfH" firstAttribute="leading" 
secondItem="E6K-GD-bgu" secondAttribute="leading" constant="10" 
id="vM8-9F-b9Q"/>
+                <constraint firstAttribute="bottom" secondItem="0Si-IF-hfH" 
secondAttribute="bottom" id="sUV-bu-8ug"/>
+                <constraint firstItem="0Si-IF-hfH" firstAttribute="leading" 
secondItem="E6K-GD-bgu" secondAttribute="leading" id="vM8-9F-b9Q"/>
             </constraints>
             <connections>
                 <outlet property="backgroundEffectView" 
destination="f5b-qJ-770" id="ASu-7B-UGN"/>
                 <outlet property="detailTextField" destination="8Fd-yT-2AG" 
id="VVh-Xd-Ma1"/>
                 <outlet property="playButton" destination="UDD-gH-RDW" 
id="Cvj-Zy-lA5"/>
                 <outlet property="queueButton" destination="Baf-bX-D7M" 
id="LXJ-9K-2zU"/>
+                <outlet property="stackView" destination="0Si-IF-hfH" 
id="QDA-wu-RRB"/>
                 <outlet property="titleTextField" destination="VGp-RV-Jl4" 
id="G9K-eO-d5s"/>
             </connections>
             <point key="canvasLocation" x="-588" y="-314"/>


=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupHeaderView.h
=====================================
@@ -35,6 +35,7 @@ extern NSString * const 
VLCLibraryAudioGroupHeaderViewIdentifier;
 
 @property (readwrite, retain, nonatomic) VLCLibraryRepresentedItem 
*representedItem;
 
+@property (readwrite, weak) IBOutlet NSStackView *stackView;
 @property (readwrite, weak) IBOutlet NSTextField *titleTextField;
 @property (readwrite, weak) IBOutlet NSTextField *detailTextField;
 @property (readwrite, weak) IBOutlet NSButton *playButton;


=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupHeaderView.m
=====================================
@@ -24,6 +24,7 @@
 
 #import "extensions/NSColor+VLCAdditions.h"
 #import "extensions/NSString+Helpers.h"
+#import "extensions/NSView+VLCAdditions.h"
 
 #import "main/VLCMain.h"
 
@@ -34,6 +35,14 @@
 
 NSString * const VLCLibraryAudioGroupHeaderViewIdentifier = 
@"VLCLibraryAudioGroupHeaderViewIdentifier";
 
+@interface VLCLibraryAudioGroupHeaderView ()
+
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000
+@property NSGlassEffectView *glassBackgroundView API_AVAILABLE(macos(26.0));
+#endif
+
+@end
+
 @implementation VLCLibraryAudioGroupHeaderView
 
 + (CGSize)defaultHeaderSize
@@ -43,18 +52,33 @@ NSString * const VLCLibraryAudioGroupHeaderViewIdentifier = 
@"VLCLibraryAudioGro
 
 - (void)awakeFromNib
 {
-    if (@available(macOS 10.14, *)) {
+    if (@available(macOS 10.14, *))
         _playButton.bezelColor = NSColor.VLCAccentColor;
-        [NSApplication.sharedApplication addObserver:self
-                                          forKeyPath:@"effectiveAppearance"
-                                             
options:NSKeyValueObservingOptionNew
-                                             context:nil];
-    }
 
-    self.backgroundEffectView.wantsLayer = YES;
-    self.backgroundEffectView.layer.cornerRadius = 
VLCLibraryUIUnits.smallSpacing;
-    self.backgroundEffectView.layer.borderWidth = 
VLCLibraryUIUnits.borderThickness;
-    [self updateColoredAppearance:self.effectiveAppearance];
+    if (@available(macOS 26.0, *)) {
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000
+        self.glassBackgroundView = [[NSGlassEffectView alloc] 
initWithFrame:self.backgroundEffectView.frame];
+
+        [self addSubview:self.glassBackgroundView
+              positioned:NSWindowBelow
+              relativeTo:self.backgroundEffectView];
+        [self.glassBackgroundView applyConstraintsToFillSuperview];
+        [self.backgroundEffectView removeFromSuperview];
+        [self.stackView removeFromSuperview];
+        self.glassBackgroundView.contentView = self.stackView;
+#endif
+    } else {
+        if (@available(macOS 10.14, *)) {
+            [NSApplication.sharedApplication addObserver:self
+                                            forKeyPath:@"effectiveAppearance"
+                                                
options:NSKeyValueObservingOptionNew
+                                                context:nil];
+        }
+        self.backgroundEffectView.wantsLayer = YES;
+        self.backgroundEffectView.layer.cornerRadius = 
VLCLibraryUIUnits.smallSpacing;
+        self.backgroundEffectView.layer.borderWidth = 
VLCLibraryUIUnits.borderThickness;
+        [self updateColoredAppearance:self.effectiveAppearance];
+    }
 }
 
 - (void)observeValueForKeyPath:(NSString *)keyPath
@@ -62,7 +86,9 @@ NSString * const VLCLibraryAudioGroupHeaderViewIdentifier = 
@"VLCLibraryAudioGro
                         change:(NSDictionary<NSKeyValueChangeKey,id> *)change
                        context:(void *)context
 {
-    if ([keyPath isEqualToString:@"effectiveAppearance"]) {
+    if (@available(macOS 26.0, *)) {
+        return;
+    } else if ([keyPath isEqualToString:@"effectiveAppearance"]) {
         NSAppearance * const effectiveAppearance = 
change[NSKeyValueChangeNewKey];
         [self updateColoredAppearance:effectiveAppearance];
     }
@@ -70,6 +96,9 @@ NSString * const VLCLibraryAudioGroupHeaderViewIdentifier = 
@"VLCLibraryAudioGro
 
 - (void)updateColoredAppearance:(NSAppearance *)appearance
 {
+    if (@available(macOS 26.0, *))
+        return;
+
     NSParameterAssert(appearance);
     BOOL isDark = NO;
     if (@available(macOS 10.14, *)) {



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/bdb08656bf6d373cb74f6376a4fc78e5d28d3453...231f5d4099ca187e5aab8dd7d380d303dc304c44

-- 
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/bdb08656bf6d373cb74f6376a4fc78e5d28d3453...231f5d4099ca187e5aab8dd7d380d303dc304c44
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to