[vlc-commits] [Git][videolan/vlc][master] 7 commits: macosx: Use different set of controls bar icons on macOS 26
Steve Lhomme (@robUx4)
gitlab at videolan.org
Wed Aug 13 11:01:30 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
f870dab6 by Claudio Cambra at 2025-08-13T10:18:12+00:00
macosx: Use different set of controls bar icons on macOS 26
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
9a673469 by Claudio Cambra at 2025-08-13T10:18:12+00:00
macosx: Use glass effect on main controls buttons in video view
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
2910fdbc by Claudio Cambra at 2025-08-13T10:18:12+00:00
macosx: Fix the contrast on symbols for playback buttons in main video view
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
6ca7f77e by Claudio Cambra at 2025-08-13T10:18:12+00:00
macosx: Call playerStateUpdated within common control bar class' update method
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
5a541b83 by Claudio Cambra at 2025-08-13T10:18:12+00:00
macosx: Do not render shadows on glass buttons
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
179545c4 by Claudio Cambra at 2025-08-13T10:18:12+00:00
macosx: Fix button sizings and appearance in macOS 26.0 main video view
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
09812753 by Claudio Cambra at 2025-08-13T10:18:12+00:00
macosx: Apply glass style to more buttons in main video view controls
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
4 changed files:
- modules/gui/macosx/UI/VLCMainVideoView.xib
- modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.h
- modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
- modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m
Changes:
=====================================
modules/gui/macosx/UI/VLCMainVideoView.xib
=====================================
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="24112" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment version="101000" identifier="macosx"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="24112"/>
<capability name="Image references" minToolsVersion="12.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@@ -44,12 +44,10 @@
<outlet property="floatOnTopButton" destination="8jZ-hd-YVq" id="x53-4o-LsM"/>
<outlet property="forwardButton" destination="sF5-Z0-bef" id="H6w-Le-NAK"/>
<outlet property="fullscreenButton" destination="dYZ-ri-Kra" id="Cw2-BS-QG9"/>
- <outlet property="fullscreenButtonWidthConstraint" destination="quS-fD-Od7" id="6hT-nR-yQI"/>
<outlet property="jumpBackwardButton" destination="AXA-01-AU8" id="gfa-Yt-ezI"/>
<outlet property="jumpForwardButton" destination="aAq-uE-mLW" id="M7n-mW-tNe"/>
<outlet property="muteVolumeButton" destination="afi-4d-rQk" id="y6R-6o-2OM"/>
<outlet property="pipButton" destination="yEi-SZ-SIS" id="vFi-Ln-9lT"/>
- <outlet property="pipButtonWidthConstraint" destination="dxa-Jx-T4p" id="a5S-ec-2xD"/>
<outlet property="playButton" destination="PCC-8a-sVF" id="ddT-ZM-Jhz"/>
<outlet property="playbackRateButton" destination="GHq-pt-nIe" id="k0k-fd-Vz5"/>
<outlet property="playingItemDisplayField" destination="lEW-MN-FFU" id="hKa-df-8UB"/>
@@ -62,14 +60,14 @@
</connections>
</customObject>
<customView appearanceType="darkAqua" id="WRu-Ic-lQK">
- <rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
+ <rect key="frame" x="0.0" y="0.0" width="749" height="480"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="MTR-ds-I8o" userLabel="Vout Containing View">
- <rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
+ <rect key="frame" x="0.0" y="0.0" width="749" height="480"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="mAS-4a-RS8" customClass="VLCVoutView">
- <rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
+ <rect key="frame" x="0.0" y="0.0" width="749" height="480"/>
</customView>
</subviews>
<constraints>
@@ -80,25 +78,25 @@
</constraints>
</customView>
<box appearanceType="darkAqua" boxType="custom" borderType="none" title="Box" titlePosition="noTitle" transparent="YES" translatesAutoresizingMaskIntoConstraints="NO" id="D4V-Zd-qvB">
- <rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
+ <rect key="frame" x="0.0" y="0.0" width="749" height="480"/>
<view key="contentView" wantsLayer="YES" id="1tI-8K-e3c">
- <rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
+ <rect key="frame" x="0.0" y="0.0" width="749" height="480"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<visualEffectView blendingMode="withinWindow" material="titlebar" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="jnw-gL-nrF">
- <rect key="frame" x="0.0" y="480" width="720" height="0.0"/>
+ <rect key="frame" x="0.0" y="480" width="749" height="0.0"/>
<constraints>
<constraint firstAttribute="height" id="wY4-If-nIp"/>
</constraints>
</visualEffectView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="FGS-tq-54S" customClass="VLCMainVideoViewOverlayView">
- <rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
+ <rect key="frame" x="0.0" y="0.0" width="749" height="480"/>
</customView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1GA-GG-Sdx">
- <rect key="frame" x="0.0" y="0.0" width="720" height="132"/>
+ <rect key="frame" x="0.0" y="0.0" width="749" height="132"/>
<subviews>
<textField wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="f4v-2z-dQ1" customClass="VLCTimeField">
- <rect key="frame" x="623" y="20" width="79" height="14"/>
+ <rect key="frame" x="652" y="20" width="79" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="75" id="8Zz-X6-yY1"/>
</constraints>
@@ -109,17 +107,17 @@
</textFieldCell>
</textField>
<stackView distribution="fill" orientation="vertical" alignment="leading" spacing="4" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="San-L7-ZvB">
- <rect key="frame" x="20" y="59" width="234" height="53"/>
+ <rect key="frame" x="20" y="59" width="167" height="53"/>
<subviews>
<textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="lEW-MN-FFU">
- <rect key="frame" x="-2" y="25" width="238" height="28"/>
+ <rect key="frame" x="-2" y="25" width="171" height="28"/>
<textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" placeholderString="Nothing Playing" usesSingleLineMode="YES" id="8l0-zS-fOa">
<font key="font" metaFont="systemBold" size="24"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
- <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5ii-yU-6Zp">
+ <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5ii-yU-6Zp">
<rect key="frame" x="-2" y="0.0" width="145" height="21"/>
<textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" placeholderString="No details to show" usesSingleLineMode="YES" id="k9I-DK-CEe">
<font key="font" textStyle="title2" name=".SFNS-Regular"/>
@@ -142,7 +140,7 @@
</customSpacing>
</stackView>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qNZ-Fh-W8i" customClass="VLCPlaybackProgressSlider">
- <rect key="frame" x="18" y="37" width="684" height="19"/>
+ <rect key="frame" x="20" y="39" width="709" height="15"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="xm6-li-LpC"/>
</constraints>
@@ -151,127 +149,102 @@
<action selector="timeSliderAction:" target="3" id="W32-wA-rN9"/>
</connections>
</slider>
- <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="10" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sJu-ZK-5QH">
- <rect key="frame" x="274" y="59" width="426" height="32"/>
+ <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="10" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="1000" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sJu-ZK-5QH">
+ <rect key="frame" x="207" y="59" width="522" height="28"/>
<subviews>
- <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Y8F-hr-iaW">
- <rect key="frame" x="0.0" y="0.0" width="299" height="32"/>
+ <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="1000" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Y8F-hr-iaW">
+ <rect key="frame" x="0.0" y="0.0" width="399" height="28"/>
<subviews>
- <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GHq-pt-nIe" customClass="VLCImageButton">
- <rect key="frame" x="0.0" y="1" width="40" height="29"/>
- <buttonCell key="cell" type="recessed" title="1.0x" bezelStyle="recessed" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="pUr-pW-j5a">
+ <button wantsLayer="YES" horizontalHuggingPriority="500" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GHq-pt-nIe" customClass="VLCImageButton">
+ <rect key="frame" x="0.0" y="0.0" width="49" height="28"/>
+ <buttonCell key="cell" type="recessed" title="1.0x" bezelStyle="recessed" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="pUr-pW-j5a">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
- <font key="font" metaFont="smallSystem"/>
+ <font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
- <constraints>
- <constraint firstAttribute="width" constant="40" id="Nvo-dk-KyW"/>
- </constraints>
<connections>
<action selector="openPlaybackRate:" target="3" id="tLQ-DO-783"/>
</connections>
</button>
- <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="95O-Oc-zrQ" customClass="VLCImageButton">
- <rect key="frame" x="45" y="-1" width="32" height="33"/>
- <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="photo.tv" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="dnH-S4-sBc">
+ <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="95O-Oc-zrQ" customClass="VLCImageButton">
+ <rect key="frame" x="54" y="0.0" width="47" height="28"/>
+ <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="photo.tv" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="dnH-S4-sBc">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
- <constraints>
- <constraint firstAttribute="width" secondItem="95O-Oc-zrQ" secondAttribute="height" multiplier="1:1" id="jod-n4-Mmj"/>
- <constraint firstAttribute="width" secondItem="95O-Oc-zrQ" secondAttribute="height" multiplier="1:1" id="mpK-z1-1hE"/>
- <constraint firstAttribute="width" constant="32" id="u03-Cv-8L6"/>
- </constraints>
<connections>
<action selector="openVideoMenu:" target="3" id="pOh-qk-4IK"/>
</connections>
</button>
- <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cja-ZG-8LF" customClass="VLCImageButton">
- <rect key="frame" x="82" y="-1" width="32" height="33"/>
- <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="waveform.circle" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="5em-Cm-yoF">
+ <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="cja-ZG-8LF" customClass="VLCImageButton">
+ <rect key="frame" x="106" y="0.0" width="43" height="28"/>
+ <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="waveform" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5em-Cm-yoF">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
- <constraints>
- <constraint firstAttribute="width" secondItem="cja-ZG-8LF" secondAttribute="height" multiplier="1:1" id="Hc7-cx-AiL"/>
- <constraint firstAttribute="width" constant="32" id="NiS-Cd-FWu"/>
- </constraints>
<connections>
<action selector="openAudioMenu:" target="3" id="hHT-Oc-wgF"/>
</connections>
</button>
- <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="YTl-LZ-WDe" customClass="VLCImageButton">
- <rect key="frame" x="119" y="-1" width="32" height="33"/>
- <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="text.bubble" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="1qF-LY-LkO">
+ <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="YTl-LZ-WDe" customClass="VLCImageButton">
+ <rect key="frame" x="154" y="0.0" width="45" height="28"/>
+ <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="text.bubble" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1qF-LY-LkO">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
- <constraints>
- <constraint firstAttribute="width" secondItem="YTl-LZ-WDe" secondAttribute="height" multiplier="1:1" id="2QI-lH-hlk"/>
- <constraint firstAttribute="width" constant="32" id="lX6-ad-1gX"/>
- <constraint firstAttribute="width" secondItem="YTl-LZ-WDe" secondAttribute="height" multiplier="1:1" id="vzf-FG-VLf"/>
- </constraints>
<connections>
<action selector="openSubtitlesMenu:" target="3" id="X6e-aG-mVF"/>
</connections>
</button>
- <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4tZ-52-1q9" customClass="VLCImageButton">
- <rect key="frame" x="156" y="-1" width="32" height="33"/>
- <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="bookmark.circle" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="bGc-fn-jgQ">
+ <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="4tZ-52-1q9" customClass="VLCImageButton">
+ <rect key="frame" x="204" y="0.0" width="42" height="28"/>
+ <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="bookmark.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="bGc-fn-jgQ">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
- <constraints>
- <constraint firstAttribute="width" secondItem="4tZ-52-1q9" secondAttribute="height" multiplier="1:1" id="UdU-aK-B0s"/>
- <constraint firstAttribute="width" constant="32" id="oY2-hp-RHB"/>
- <constraint firstAttribute="width" secondItem="4tZ-52-1q9" secondAttribute="height" multiplier="1:1" id="pSW-vN-Ly5"/>
- </constraints>
<connections>
<action selector="openBookmarks:" target="3" id="o6m-9M-L4U"/>
</connections>
</button>
- <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8jZ-hd-YVq" customClass="VLCImageButton">
- <rect key="frame" x="193" y="-1" width="32" height="33"/>
- <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="play.rectangle.on.rectangle.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="fyV-F5-ogO">
+ <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="8jZ-hd-YVq" customClass="VLCImageButton">
+ <rect key="frame" x="251" y="0.0" width="47" height="28"/>
+ <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="play.rectangle.on.rectangle" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="fyV-F5-ogO">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
- <constraints>
- <constraint firstAttribute="width" constant="32" id="QNF-zS-6Sz"/>
- <constraint firstAttribute="width" secondItem="8jZ-hd-YVq" secondAttribute="height" multiplier="1:1" id="iNf-6g-2uS"/>
- </constraints>
<connections>
<action selector="toggleFloatOnTop:" target="3" id="BvH-qi-jx1"/>
</connections>
</button>
- <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dYZ-ri-Kra" customClass="VLCImageButton">
- <rect key="frame" x="230" y="-1" width="32" height="33"/>
- <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="arrow.up.left.and.arrow.down.right" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="Z8g-js-0W6">
+ <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="dYZ-ri-Kra" customClass="VLCImageButton">
+ <rect key="frame" x="303" y="0.0" width="44" height="28"/>
+ <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="arrow.up.left.and.arrow.down.right" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Z8g-js-0W6">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
- <constraints>
- <constraint firstAttribute="width" secondItem="dYZ-ri-Kra" secondAttribute="height" multiplier="1:1" id="cHQ-Fu-L8k"/>
- <constraint firstAttribute="width" constant="32" id="quS-fD-Od7"/>
- </constraints>
<connections>
<action selector="fullscreen:" target="3" id="0Kk-UV-WtF"/>
</connections>
</button>
- <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yEi-SZ-SIS" customClass="VLCImageButton">
- <rect key="frame" x="267" y="-1" width="32" height="33"/>
- <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="pip.enter" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="Q7p-GS-7p0">
+ <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="yEi-SZ-SIS" customClass="VLCImageButton">
+ <rect key="frame" x="352" y="0.0" width="47" height="28"/>
+ <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="pip.enter" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Q7p-GS-7p0">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
- <constraints>
- <constraint firstAttribute="width" secondItem="yEi-SZ-SIS" secondAttribute="height" multiplier="1:1" id="00T-hb-4vg"/>
- <constraint firstAttribute="width" constant="32" id="dxa-Jx-T4p"/>
- </constraints>
<connections>
<action selector="onPipButtonClick:" target="3" id="2Yi-Jo-2No"/>
</connections>
</button>
</subviews>
+ <constraints>
+ <constraint firstItem="yEi-SZ-SIS" firstAttribute="height" secondItem="dYZ-ri-Kra" secondAttribute="height" id="64q-0T-ZPt"/>
+ <constraint firstItem="cja-ZG-8LF" firstAttribute="height" secondItem="95O-Oc-zrQ" secondAttribute="height" id="OBm-W4-hRF"/>
+ <constraint firstItem="95O-Oc-zrQ" firstAttribute="height" secondItem="GHq-pt-nIe" secondAttribute="height" id="Pyc-a9-WZc"/>
+ <constraint firstItem="8jZ-hd-YVq" firstAttribute="height" secondItem="4tZ-52-1q9" secondAttribute="height" id="YuZ-7m-v6h"/>
+ <constraint firstItem="4tZ-52-1q9" firstAttribute="height" secondItem="YTl-LZ-WDe" secondAttribute="height" id="iiX-nL-dTj"/>
+ <constraint firstItem="dYZ-ri-Kra" firstAttribute="height" secondItem="8jZ-hd-YVq" secondAttribute="height" id="qHA-c2-Xxs"/>
+ <constraint firstItem="YTl-LZ-WDe" firstAttribute="height" secondItem="cja-ZG-8LF" secondAttribute="height" id="zcJ-Oe-WPZ"/>
+ </constraints>
<visibilityPriorities>
<integer value="1000"/>
<integer value="1000"/>
@@ -294,24 +267,23 @@
</customSpacing>
</stackView>
<stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zyp-45-IgR">
- <rect key="frame" x="309" y="0.0" width="117" height="32"/>
+ <rect key="frame" x="409" y="0.0" width="113" height="28"/>
<subviews>
<button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="afi-4d-rQk" customClass="VLCImageButton">
- <rect key="frame" x="0.0" y="-1" width="32" height="33"/>
+ <rect key="frame" x="0.0" y="0.0" width="28" height="28"/>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="volume.3.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="POe-ne-XtP">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
- <constraint firstAttribute="width" secondItem="afi-4d-rQk" secondAttribute="height" multiplier="1:1" id="2lo-OW-sv9"/>
- <constraint firstAttribute="width" constant="32" id="PWI-LB-n9j"/>
+ <constraint firstAttribute="width" secondItem="afi-4d-rQk" secondAttribute="height" multiplier="1:1" id="1JT-8w-PUo"/>
</constraints>
<connections>
<action selector="volumeAction:" target="3" id="GOu-6c-pg9"/>
</connections>
</button>
<slider verticalHuggingPriority="750" horizontalCompressionResistancePriority="800" translatesAutoresizingMaskIntoConstraints="NO" id="fKc-2d-Uu6" customClass="VLCVolumeSlider">
- <rect key="frame" x="35" y="8" width="84" height="17"/>
+ <rect key="frame" x="33" y="8" width="80" height="12"/>
<constraints>
<constraint firstAttribute="width" constant="80" id="cWg-Fr-x0Z"/>
</constraints>
@@ -373,10 +345,10 @@
</shadow>
</customView>
<stackView wantsLayer="YES" distribution="fill" orientation="horizontal" alignment="centerY" spacing="20" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="CvV-yX-Nbh">
- <rect key="frame" x="208" y="208" width="304" height="64"/>
+ <rect key="frame" x="207" y="208" width="336" height="64"/>
<subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="AXA-01-AU8" customClass="VLCImageButton">
- <rect key="frame" x="0.0" y="13" width="32" height="40"/>
+ <rect key="frame" x="0.0" y="5" width="48" height="56"/>
<shadow key="shadow" blurRadius="20">
<color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</shadow>
@@ -386,16 +358,15 @@
</buttonCell>
<color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267140000001" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
- <constraint firstAttribute="width" constant="32" id="Xh5-1i-dxH"/>
+ <constraint firstAttribute="width" constant="48" id="Xh5-1i-dxH"/>
<constraint firstAttribute="width" secondItem="AXA-01-AU8" secondAttribute="height" multiplier="1:1" id="lgn-JT-8Qk"/>
- <constraint firstAttribute="width" secondItem="AXA-01-AU8" secondAttribute="height" multiplier="1:1" id="tkp-uc-bfs"/>
</constraints>
<connections>
<action selector="jumpBackward:" target="3" id="Kkq-12-jbm"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="V9d-hX-iyg" customClass="VLCImageButton">
- <rect key="frame" x="52" y="6.5" width="48.5" height="51"/>
+ <rect key="frame" x="68" y="6.5" width="48.5" height="51"/>
<shadow key="shadow" blurRadius="20">
<color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</shadow>
@@ -413,11 +384,11 @@
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="PCC-8a-sVF" customClass="VLCImageButton">
- <rect key="frame" x="120" y="-1.5" width="64.5" height="68"/>
+ <rect key="frame" x="136" y="-1.5" width="64.5" height="68"/>
<shadow key="shadow" blurRadius="30">
<color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</shadow>
- <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="play.fill" catalog="system" imagePosition="overlaps" alignment="center" alternateImage="VLCPauseTemplate" imageScaling="proportionallyUpOrDown" inset="2" id="Jk0-sw-EOp">
+ <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="play.fill" catalog="system" imagePosition="only" alignment="center" alternateImage="VLCPauseTemplate" imageScaling="proportionallyUpOrDown" inset="2" id="Jk0-sw-EOp">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
@@ -434,7 +405,7 @@
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="sF5-Z0-bef" customClass="VLCImageButton">
- <rect key="frame" x="204" y="6.5" width="48.5" height="51"/>
+ <rect key="frame" x="220" y="6.5" width="48.5" height="51"/>
<shadow key="shadow" blurRadius="20">
<color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</shadow>
@@ -452,7 +423,7 @@
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="aAq-uE-mLW" customClass="VLCImageButton">
- <rect key="frame" x="272" y="13" width="32" height="40"/>
+ <rect key="frame" x="288" y="5" width="48" height="56"/>
<shadow key="shadow" blurRadius="20">
<color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</shadow>
@@ -462,9 +433,8 @@
</buttonCell>
<color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267140000001" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
- <constraint firstAttribute="width" constant="32" id="OBA-WG-jaz"/>
+ <constraint firstAttribute="width" constant="48" id="OBA-WG-jaz"/>
<constraint firstAttribute="width" secondItem="aAq-uE-mLW" secondAttribute="height" multiplier="1:1" id="eMl-LK-UdE"/>
- <constraint firstAttribute="width" secondItem="aAq-uE-mLW" secondAttribute="height" multiplier="1:1" id="g5c-kh-jsZ"/>
</constraints>
<connections>
<action selector="jumpForward:" target="3" id="5yg-na-tAR"/>
@@ -487,7 +457,7 @@
</customSpacing>
</stackView>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UoQ-34-Pox">
- <rect key="frame" x="20" y="431" width="22" height="29"/>
+ <rect key="frame" x="20" y="432" width="40" height="28"/>
<shadow key="shadow" blurRadius="2">
<color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</shadow>
@@ -502,7 +472,7 @@
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Drq-if-dw4">
- <rect key="frame" x="669" y="431" width="31" height="29"/>
+ <rect key="frame" x="681" y="432" width="48" height="28"/>
<shadow key="shadow" blurRadius="2">
<color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</shadow>
@@ -539,7 +509,7 @@
<color key="fillColor" red="0.0" green="0.0" blue="0.0" alpha="0.35060533940397354" colorSpace="custom" customColorSpace="sRGB"/>
</box>
<stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="CjJ-z0-ITu">
- <rect key="frame" x="324" y="292" width="72" height="32"/>
+ <rect key="frame" x="339" y="292" width="72" height="32"/>
<subviews>
<progressIndicator maxValue="100" indeterminate="YES" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="xOQ-YR-iAc">
<rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
@@ -588,15 +558,15 @@
<image name="arrow.trianglehead.counterclockwise" catalog="system" width="15" height="17"/>
<image name="arrow.up.left.and.arrow.down.right" catalog="system" width="16" height="15"/>
<image name="backward.fill" catalog="system" width="20" height="12"/>
- <image name="bookmark.circle" catalog="system" width="15" height="15"/>
+ <image name="bookmark.fill" catalog="system" width="14" height="16"/>
<image name="forward.fill" catalog="system" width="20" height="12"/>
<image name="photo.tv" catalog="system" width="19" height="15"/>
<image name="pin.fill" catalog="system" width="19" height="22"/>
<image name="pip.enter" catalog="system" width="20" height="16"/>
<image name="play.fill" catalog="system" width="12" height="13"/>
- <image name="play.rectangle.on.rectangle.fill" catalog="system" width="19" height="16"/>
+ <image name="play.rectangle.on.rectangle" catalog="system" width="19" height="15"/>
<image name="text.bubble" catalog="system" width="17" height="16"/>
<image name="volume.3.fill" catalog="system" width="22" height="15"/>
- <image name="waveform.circle" catalog="system" width="15" height="15"/>
+ <image name="waveform" catalog="system" width="15" height="16"/>
</resources>
</document>
=====================================
modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.h
=====================================
@@ -89,4 +89,7 @@
- (void)updateMuteVolumeButton:(NSNotification *)aNotification;
- (void)updateCurrentItemDisplayControls:(NSNotification *)aNotification;
+- (void)playerStateUpdated:(NSNotification *)notification;
+- (void)updateCurrentItemDisplayControls:(NSNotification *)notification;
+
@end
=====================================
modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
=====================================
@@ -144,18 +144,23 @@
self.fullscreenButton.accessibilityLabel = self.fullscreenButton.toolTip;
if (@available(macOS 11.0, *)) {
- _playImage = [NSImage imageWithSystemSymbolName:@"play.circle.fill"
- accessibilityDescription:_NS("Play")];
- _pressedPlayImage = [NSImage imageWithSystemSymbolName:@"play.circle.fill"
- accessibilityDescription:_NS("Play")];
- _pauseImage = [NSImage imageWithSystemSymbolName:@"pause.circle.fill"
- accessibilityDescription:_NS("Pause")];
- _pressedPauseImage = [NSImage imageWithSystemSymbolName:@"pause.circle.fill"
- accessibilityDescription:_NS("Pause")];
- _backwardImage = [NSImage imageWithSystemSymbolName:@"backward.fill"
- accessibilityDescription:_NS("Previous")];
- _forwardImage = [NSImage imageWithSystemSymbolName:@"forward.fill"
- accessibilityDescription:_NS("Next")];
+ if (@available(macOS 26.0, *)) {
+ _playImage = [NSImage imageWithSystemSymbolName:@"play.fill" accessibilityDescription:_NS("Play")];
+ _pressedPlayImage = [NSImage imageWithSystemSymbolName:@"play.fill" accessibilityDescription:_NS("Play")];
+ _pauseImage = [NSImage imageWithSystemSymbolName:@"pause.fill" accessibilityDescription:_NS("Pause")];
+ _pressedPauseImage = [NSImage imageWithSystemSymbolName:@"pause.fill" accessibilityDescription:_NS("Pause")];
+ } else {
+ _playImage = [NSImage imageWithSystemSymbolName:@"play.circle.fill"
+ accessibilityDescription:_NS("Play")];
+ _pressedPlayImage = [NSImage imageWithSystemSymbolName:@"play.circle.fill"
+ accessibilityDescription:_NS("Play")];
+ _pauseImage = [NSImage imageWithSystemSymbolName:@"pause.circle.fill"
+ accessibilityDescription:_NS("Pause")];
+ _pressedPauseImage = [NSImage imageWithSystemSymbolName:@"pause.circle.fill"
+ accessibilityDescription:_NS("Pause")];
+ }
+ _backwardImage = [NSImage imageWithSystemSymbolName:@"backward.fill" accessibilityDescription:_NS("Previous")];
+ _forwardImage = [NSImage imageWithSystemSymbolName:@"forward.fill" accessibilityDescription:_NS("Next")];
_fullscreenImage = [NSImage imageWithSystemSymbolName:@"arrow.up.backward.and.arrow.down.forward"
accessibilityDescription:_NS("Fullscreen")];
_mutedVolumeImage = [NSImage imageWithSystemSymbolName:@"speaker.slash.fill"
@@ -246,8 +251,6 @@
[self.forwardButton setAction:@selector(fwd:)];
[self.backwardButton setAction:@selector(bwd:)];
- [self playerStateUpdated:nil];
-
self.artworkImageView.cropsImagesToRoundedCorners = YES;
self.artworkImageView.image = [NSImage imageNamed:@"noart"];
self.artworkImageView.contentGravity = VLCImageViewContentGravityResize;
@@ -414,6 +417,7 @@
[self updateMuteVolumeButtonImage];
[self updatePlaybackControls:nil];
[self updateCurrentItemDisplayControls:nil];
+ [self playerStateUpdated:nil];
}
- (void)updateTimeSlider:(NSNotification *)aNotification;
=====================================
modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m
=====================================
@@ -44,6 +44,9 @@
VLCPlayQueueController *_playQueueController;
VLCPlayerController *_playerController;
}
+
+ at property (readonly) NSImageSymbolConfiguration *mainButtonsSymbolConfig API_AVAILABLE(macos(26.0));
+
@end
@implementation VLCMainVideoViewControlsBar
@@ -52,14 +55,14 @@
{
[super awakeFromNib];
- _bookmarksButton.toolTip = _NS("Bookmarks");
- _bookmarksButton.accessibilityLabel = _bookmarksButton.toolTip;
+ self.bookmarksButton.toolTip = _NS("Bookmarks");
+ self.bookmarksButton.accessibilityLabel = self.bookmarksButton.toolTip;
- _subtitlesButton.toolTip = _NS("Subtitle settings");
- _subtitlesButton.accessibilityLabel = _subtitlesButton.toolTip;
+ self.subtitlesButton.toolTip = _NS("Subtitle settings");
+ self.subtitlesButton.accessibilityLabel = self.subtitlesButton.toolTip;
- _audioButton.toolTip = _NS("Audio settings");
- _audioButton.accessibilityLabel = _audioButton.toolTip;
+ self.audioButton.toolTip = _NS("Audio settings");
+ self.audioButton.accessibilityLabel = self.audioButton.toolTip;
self.videoButton.toolTip = _NS("Video settings");
self.videoButton.accessibilityLabel = self.videoButton.toolTip;
@@ -67,6 +70,36 @@
self.playbackRateButton.toolTip = _NS("Playback rate");
self.playbackRateButton.accessibilityLabel = self.playbackRateButton.toolTip;
+ if (@available(macOS 26.0, *)) {
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000
+ _mainButtonsSymbolConfig = [NSImageSymbolConfiguration configurationWithPaletteColors:@[NSColor.whiteColor]];
+ NSArray<NSButton *> * const buttons = @[
+ self.playButton,
+ self.backwardButton,
+ self.forwardButton,
+ self.jumpBackwardButton,
+ self.jumpForwardButton,
+ self.bookmarksButton,
+ self.subtitlesButton,
+ self.audioButton,
+ self.videoButton,
+ self.fullscreenButton,
+ self.floatOnTopButton,
+ self.playbackRateButton,
+ self.pipButton,
+ self.muteVolumeButton,
+ ];
+ for (NSButton * const button in buttons) {
+ button.bordered = YES;
+ button.borderShape = NSControlBorderShapeCapsule;
+ button.bezelStyle = NSBezelStyleGlass;
+ button.layer = [CALayer layer];
+ button.image = [button.image imageWithSymbolConfiguration:_mainButtonsSymbolConfig];
+ button.alternateImage = [button.alternateImage imageWithSymbolConfiguration:_mainButtonsSymbolConfig];
+ }
+#endif
+ }
+
_playQueueController = VLCMain.sharedInstance.playQueueController;
_playerController = _playQueueController.playerController;
@@ -145,6 +178,13 @@
self.playbackRateButton.title =
[NSString stringWithFormat:@"%.1fx", _playerController.playbackRate];
self.playbackRateButton.enabled = _playerController.rateChangable;
+
+ if (@available(macOS 26.0, *)) {
+ NSMutableAttributedString * const colorTitle = [[NSMutableAttributedString alloc] initWithAttributedString:self.playbackRateButton.attributedTitle];
+ const NSRange titleRange = NSMakeRange(0, colorTitle.length);
+ [colorTitle addAttribute:NSForegroundColorAttributeName value:NSColor.whiteColor range:titleRange];
+ self.playbackRateButton.attributedTitle = colorTitle;
+ }
}
- (IBAction)openPlaybackRate:(id)sender
@@ -230,4 +270,42 @@
self.subtitlesButton.hidden = currentItemIsAudio;
}
+- (void)playerStateUpdated:(NSNotification *)notification
+{
+ [super playerStateUpdated:notification];
+ if (@available(macOS 26.0, *)) {
+ if (self.mainButtonsSymbolConfig == nil)
+ return;
+ self.playButton.image = [self.playButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ self.playButton.alternateImage = [self.playButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ }
+}
+
+- (void)updateCurrentItemDisplayControls:(NSNotification *)notification
+{
+ [super updateCurrentItemDisplayControls:notification];
+ if (@available(macOS 26.0, *)) {
+ if (self.mainButtonsSymbolConfig == nil)
+ return;
+ self.forwardButton.image = [self.forwardButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ self.forwardButton.alternateImage = [self.forwardButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ self.backwardButton.image = [self.backwardButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ self.backwardButton.alternateImage = [self.backwardButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ self.jumpForwardButton.image = [self.jumpForwardButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ self.jumpForwardButton.alternateImage = [self.jumpForwardButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ self.jumpBackwardButton.image = [self.jumpBackwardButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ self.jumpBackwardButton.alternateImage = [self.jumpBackwardButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ }
+}
+
+- (void)updateMuteVolumeButtonImage
+{
+ [super updateMuteVolumeButtonImage];
+ if (@available(macOS 26.0, *)) {
+ if (self.mainButtonsSymbolConfig == nil)
+ return;
+ self.muteVolumeButton.image = [self.muteVolumeButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig];
+ }
+}
+
@end
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/87b230208fe2946b6edf0338e5ddced1b1bc9a8b...09812753b7cf1caa580dc7cd6a2a1dd90c32b739
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/87b230208fe2946b6edf0338e5ddced1b1bc9a8b...09812753b7cf1caa580dc7cd6a2a1dd90c32b739
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list