[vlc-commits] [Git][videolan/vlc][master] 9 commits: macosx: Detach library window controls bar from window bottom, overlay

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Sat Aug 16 13:18:39 UTC 2025



Felix Paul Kühne pushed to branch master at VideoLAN / VLC


Commits:
c21e0eb5 by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Detach library window controls bar from window bottom, overlay

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
58a0ae8d by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Modify show/hide of library controls bar to use opacity

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
9603ab10 by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Improve positioning of bottom bar view items

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
ee79cb57 by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Use a glass effect view for the main window controls bar

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
be9c60d0 by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Adjust positioning of controls bar within main library view within library window split view controller

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
fc3e5767 by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Give fallback visual effect based background for bottom bar view nice corners

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
8c5884d0 by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Adjust library scroll view insets to account for playback bar

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
b64692f1 by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Also ensure the songs library table view scroll view accounts for playback bar

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
fb021acf by Claudio Cambra at 2025-08-16T13:04:36+00:00
macosx: Improve visual effect visuals via XIB (border, effect type)

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -


9 changed files:

- modules/gui/macosx/UI/VLCLibraryWindow.xib
- modules/gui/macosx/library/VLCLibraryUIUnits.m
- modules/gui/macosx/library/VLCLibraryWindow.h
- modules/gui/macosx/library/VLCLibraryWindow.m
- modules/gui/macosx/library/VLCLibraryWindowSplitViewController.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
- modules/gui/macosx/views/VLCBottomBarView.m
- modules/gui/macosx/windows/controlsbar/VLCMainWindowControlsBar.h
- modules/gui/macosx/windows/controlsbar/VLCMainWindowControlsBar.m


Changes:

=====================================
modules/gui/macosx/UI/VLCLibraryWindow.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">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="24112" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="24112"/>
         <capability name="Search Toolbar Item" minToolsVersion="12.0" minSystemVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -18,25 +18,25 @@
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="896" height="456"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1019"/>
             <view key="contentView" id="EiT-Mj-1SZ">
                 <rect key="frame" x="0.0" y="0.0" width="896" height="456"/>
                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                 <subviews>
                     <splitView autosaveName="librarywindowsplitview" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="u8g-jy-S4e">
-                        <rect key="frame" x="0.0" y="48" width="896" height="408"/>
+                        <rect key="frame" x="0.0" y="0.0" width="896" height="456"/>
                     </splitView>
-                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="vUy-jt-gjY" customClass="VLCBottomBarView">
-                        <rect key="frame" x="0.0" y="0.0" width="896" height="48"/>
+                    <customView horizontalHuggingPriority="1" horizontalCompressionResistancePriority="1" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vUy-jt-gjY" customClass="VLCBottomBarView">
+                        <rect key="frame" x="20" y="20" width="856" height="50"/>
                         <subviews>
-                            <visualEffectView blendingMode="behindWindow" material="titlebar" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="D5i-Pe-TAl">
-                                <rect key="frame" x="0.0" y="0.0" width="896" height="47"/>
+                            <visualEffectView ambiguous="YES" blendingMode="withinWindow" material="popover" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="D5i-Pe-TAl">
+                                <rect key="frame" x="0.0" y="1" width="856" height="48"/>
                             </visualEffectView>
-                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="MQH-bI-Zdh" customClass="VLCDragDropView">
-                                <rect key="frame" x="0.0" y="0.0" width="896" height="48"/>
+                            <customView ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MQH-bI-Zdh" customClass="VLCDragDropView">
+                                <rect key="frame" x="20" y="0.0" width="816" height="50"/>
                                 <subviews>
                                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="YAj-e7-KCU" userLabel="New play controls group ">
-                                        <rect key="frame" x="16" y="4" width="188" height="40"/>
+                                        <rect key="frame" x="10" y="5" width="188" height="40"/>
                                         <subviews>
                                             <button translatesAutoresizingMaskIntoConstraints="NO" id="72A-6S-lpR" userLabel="Jump Back Button">
                                                 <rect key="frame" x="0.0" y="5" width="24" height="32"/>
@@ -123,11 +123,11 @@
                                             <constraint firstItem="jGc-Xw-GYI" firstAttribute="leading" secondItem="72A-6S-lpR" secondAttribute="trailing" constant="16" id="wzB-TW-knV"/>
                                         </constraints>
                                     </customView>
-                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="Ktr-qT-1fr" customClass="VLCTrackingView">
-                                        <rect key="frame" x="220" y="4" width="456" height="40"/>
+                                    <customView ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ktr-qT-1fr" customClass="VLCTrackingView">
+                                        <rect key="frame" x="220" y="5" width="376" height="40"/>
                                         <subviews>
-                                            <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="4" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalCompressionResistancePriority="250" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jlv-jC-dQB">
-                                                <rect key="frame" x="170" y="24" width="153" height="16"/>
+                                            <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="4" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalCompressionResistancePriority="250" ambiguous="YES" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jlv-jC-dQB">
+                                                <rect key="frame" x="130" y="24" width="153" height="16"/>
                                                 <subviews>
                                                     <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="d0e-29-yNq" userLabel="Song Name">
                                                         <rect key="frame" x="-2" y="0.0" width="157" height="16"/>
@@ -221,15 +221,15 @@
                                                     <constraint firstItem="5o7-Z0-dqS" firstAttribute="leading" secondItem="SM6-nx-NKD" secondAttribute="leading" id="vGw-cB-VLb"/>
                                                 </constraints>
                                             </customView>
-                                            <slider hidden="YES" horizontalHuggingPriority="200" verticalHuggingPriority="750" verticalCompressionResistancePriority="751" mirrorLayoutDirectionWhenInternationalizing="never" translatesAutoresizingMaskIntoConstraints="NO" id="9Hg-t2-K5z" customClass="VLCPlaybackProgressSlider">
-                                                <rect key="frame" x="86" y="-2" width="320" height="20"/>
+                                            <slider hidden="YES" horizontalHuggingPriority="200" verticalHuggingPriority="750" verticalCompressionResistancePriority="751" ambiguous="YES" mirrorLayoutDirectionWhenInternationalizing="never" translatesAutoresizingMaskIntoConstraints="NO" id="9Hg-t2-K5z" customClass="VLCPlaybackProgressSlider">
+                                                <rect key="frame" x="88" y="0.0" width="236" height="16"/>
                                                 <sliderCell key="cell" controlSize="mini" continuous="YES" state="on" alignment="left" maxValue="1" doubleValue="0.32600000000000001" tickMarkPosition="above" sliderType="linear" id="YMg-uo-8nX" customClass="VLCPlaybackProgressSliderCell"/>
                                                 <connections>
                                                     <action selector="timeSliderAction:" target="Uzf-Tf-H8x" id="eDh-39-Ej1"/>
                                                 </connections>
                                             </slider>
-                                            <textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oGd-mG-cFw" customClass="VLCTimeField">
-                                                <rect key="frame" x="406" y="3" width="52" height="11"/>
+                                            <textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oGd-mG-cFw" customClass="VLCTimeField">
+                                                <rect key="frame" x="326" y="3" width="52" height="11"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" constant="48" id="mAg-xF-yHo"/>
                                                 </constraints>
@@ -258,8 +258,8 @@
                                             <constraint firstItem="zOB-QJ-TUy" firstAttribute="leading" secondItem="SM6-nx-NKD" secondAttribute="trailing" constant="4" id="wML-fX-wuF"/>
                                         </constraints>
                                     </customView>
-                                    <stackView distribution="fillEqually" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="S1K-Lp-DVO">
-                                        <rect key="frame" x="692" y="4" width="188" height="40"/>
+                                    <stackView distribution="fillEqually" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" ambiguous="YES" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="S1K-Lp-DVO">
+                                        <rect key="frame" x="612" y="5" width="188" height="40"/>
                                         <subviews>
                                             <button horizontalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="Bt8-jQ-hUr">
                                                 <rect key="frame" x="0.0" y="13.5" width="16" height="14"/>
@@ -278,7 +278,7 @@
                                                 <rect key="frame" x="21" y="0.0" width="146" height="40"/>
                                                 <subviews>
                                                     <slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="noz-yJ-oH4" customClass="VLCVolumeSlider">
-                                                        <rect key="frame" x="6" y="12" width="126" height="17"/>
+                                                        <rect key="frame" x="8" y="14" width="122" height="12"/>
                                                         <constraints>
                                                             <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="48" id="EM2-Hh-lqK"/>
                                                         </constraints>
@@ -288,7 +288,7 @@
                                                         </connections>
                                                     </slider>
                                                     <button translatesAutoresizingMaskIntoConstraints="NO" id="75c-FF-mgb">
-                                                        <rect key="frame" x="110" y="14" width="12" height="12"/>
+                                                        <rect key="frame" x="134" y="14" width="12" height="12"/>
                                                         <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="VLCVolumeOnTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" id="a9Z-7I-lXJ">
                                                             <behavior key="behavior" lightByContents="YES"/>
                                                             <font key="font" metaFont="system" size="10"/>
@@ -302,7 +302,7 @@
                                                         </connections>
                                                     </button>
                                                     <button translatesAutoresizingMaskIntoConstraints="NO" id="IAy-58-UPp">
-                                                        <rect key="frame" x="42" y="14" width="12" height="12"/>
+                                                        <rect key="frame" x="0.0" y="14" width="12" height="12"/>
                                                         <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="VLCVolumeOffTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" id="qTN-dX-Oj5">
                                                             <behavior key="behavior" lightByContents="YES"/>
                                                             <font key="font" metaFont="system" size="10"/>
@@ -354,42 +354,38 @@
                                     </stackView>
                                 </subviews>
                                 <constraints>
-                                    <constraint firstItem="S1K-Lp-DVO" firstAttribute="top" secondItem="MQH-bI-Zdh" secondAttribute="top" constant="4" id="6BO-R7-IvY"/>
+                                    <constraint firstItem="S1K-Lp-DVO" firstAttribute="top" secondItem="MQH-bI-Zdh" secondAttribute="top" constant="5" id="6BO-R7-IvY"/>
                                     <constraint firstItem="Ktr-qT-1fr" firstAttribute="leading" secondItem="YAj-e7-KCU" secondAttribute="trailing" constant="16" id="9P6-Y4-CxW"/>
-                                    <constraint firstAttribute="bottom" secondItem="Ktr-qT-1fr" secondAttribute="bottom" constant="4" id="9pB-9C-2xy"/>
-                                    <constraint firstAttribute="trailing" secondItem="S1K-Lp-DVO" secondAttribute="trailing" constant="16" id="BUG-PH-qrw"/>
-                                    <constraint firstAttribute="bottom" secondItem="YAj-e7-KCU" secondAttribute="bottom" constant="4" id="Gqk-sg-bBK"/>
+                                    <constraint firstAttribute="bottom" secondItem="Ktr-qT-1fr" secondAttribute="bottom" constant="5" id="9pB-9C-2xy"/>
+                                    <constraint firstAttribute="trailing" secondItem="S1K-Lp-DVO" secondAttribute="trailing" constant="10" id="BUG-PH-qrw"/>
+                                    <constraint firstAttribute="bottom" secondItem="YAj-e7-KCU" secondAttribute="bottom" constant="5" id="Gqk-sg-bBK"/>
                                     <constraint firstItem="S1K-Lp-DVO" firstAttribute="width" secondItem="YAj-e7-KCU" secondAttribute="width" id="NxM-eQ-3UW"/>
                                     <constraint firstItem="Ktr-qT-1fr" firstAttribute="trailing" secondItem="S1K-Lp-DVO" secondAttribute="leading" constant="-16" id="hN9-7W-Mx1"/>
-                                    <constraint firstAttribute="bottom" secondItem="S1K-Lp-DVO" secondAttribute="bottom" constant="4" id="qCf-Co-yI1"/>
-                                    <constraint firstItem="YAj-e7-KCU" firstAttribute="top" secondItem="MQH-bI-Zdh" secondAttribute="top" constant="4" id="sIM-7y-JNq"/>
-                                    <constraint firstItem="Ktr-qT-1fr" firstAttribute="top" secondItem="MQH-bI-Zdh" secondAttribute="top" constant="4" id="t0h-f6-FGO"/>
-                                    <constraint firstItem="YAj-e7-KCU" firstAttribute="leading" secondItem="MQH-bI-Zdh" secondAttribute="leading" constant="16" id="tkj-nh-Tfb"/>
+                                    <constraint firstAttribute="bottom" secondItem="S1K-Lp-DVO" secondAttribute="bottom" constant="5" id="qCf-Co-yI1"/>
+                                    <constraint firstItem="YAj-e7-KCU" firstAttribute="top" secondItem="MQH-bI-Zdh" secondAttribute="top" constant="5" id="sIM-7y-JNq"/>
+                                    <constraint firstItem="Ktr-qT-1fr" firstAttribute="top" secondItem="MQH-bI-Zdh" secondAttribute="top" constant="5" id="t0h-f6-FGO"/>
+                                    <constraint firstItem="YAj-e7-KCU" firstAttribute="leading" secondItem="MQH-bI-Zdh" secondAttribute="leading" constant="10" id="tkj-nh-Tfb"/>
                                 </constraints>
                             </customView>
                         </subviews>
                         <constraints>
-                            <constraint firstAttribute="bottom" secondItem="D5i-Pe-TAl" secondAttribute="bottom" id="1LS-Zu-gsR"/>
-                            <constraint firstAttribute="height" constant="48" id="Fps-hR-AFq"/>
+                            <constraint firstAttribute="bottom" secondItem="D5i-Pe-TAl" secondAttribute="bottom" constant="1" id="1LS-Zu-gsR"/>
                             <constraint firstAttribute="bottom" secondItem="MQH-bI-Zdh" secondAttribute="bottom" id="Uo1-sD-OXk"/>
-                            <constraint firstItem="D5i-Pe-TAl" firstAttribute="leading" secondItem="vUy-jt-gjY" secondAttribute="leading" id="WKP-Ke-OrH"/>
-                            <constraint firstItem="MQH-bI-Zdh" firstAttribute="leading" secondItem="vUy-jt-gjY" secondAttribute="leading" id="YVB-nY-sHE"/>
+                            <constraint firstItem="D5i-Pe-TAl" firstAttribute="leading" secondItem="vUy-jt-gjY" secondAttribute="leading" constant="1" id="WKP-Ke-OrH"/>
+                            <constraint firstItem="MQH-bI-Zdh" firstAttribute="leading" secondItem="vUy-jt-gjY" secondAttribute="leading" constant="5" id="YVB-nY-sHE"/>
                             <constraint firstItem="D5i-Pe-TAl" firstAttribute="top" secondItem="vUy-jt-gjY" secondAttribute="top" constant="1" id="ZD9-R0-yq0"/>
-                            <constraint firstAttribute="trailing" secondItem="MQH-bI-Zdh" secondAttribute="trailing" id="aBH-H2-ykp"/>
+                            <constraint firstAttribute="trailing" secondItem="MQH-bI-Zdh" secondAttribute="trailing" constant="5" id="aBH-H2-ykp"/>
                             <constraint firstItem="MQH-bI-Zdh" firstAttribute="top" secondItem="vUy-jt-gjY" secondAttribute="top" id="kba-GQ-94a"/>
-                            <constraint firstAttribute="trailing" secondItem="D5i-Pe-TAl" secondAttribute="trailing" id="lo1-R4-xx4"/>
+                            <constraint firstAttribute="trailing" secondItem="D5i-Pe-TAl" secondAttribute="trailing" constant="1" id="lo1-R4-xx4"/>
                         </constraints>
                     </customView>
                 </subviews>
                 <constraints>
-                    <constraint firstAttribute="bottom" secondItem="u8g-jy-S4e" secondAttribute="bottom" priority="250" id="DQQ-ji-YSy"/>
-                    <constraint firstItem="vUy-jt-gjY" firstAttribute="top" secondItem="u8g-jy-S4e" secondAttribute="bottom" id="QH8-mU-6ZP"/>
-                    <constraint firstItem="vUy-jt-gjY" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" id="Sse-bx-ewr"/>
-                    <constraint firstAttribute="trailing" secondItem="vUy-jt-gjY" secondAttribute="trailing" id="amK-mR-Fvr"/>
+                    <constraint firstAttribute="bottom" secondItem="u8g-jy-S4e" secondAttribute="bottom" id="DQQ-ji-YSy"/>
                     <constraint firstItem="u8g-jy-S4e" firstAttribute="top" secondItem="EiT-Mj-1SZ" secondAttribute="top" id="j4i-Gt-xCB"/>
                     <constraint firstAttribute="trailing" secondItem="u8g-jy-S4e" secondAttribute="trailing" id="lEc-Vr-8M9"/>
                     <constraint firstItem="u8g-jy-S4e" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" id="s58-Wr-5SV"/>
-                    <constraint firstAttribute="bottom" secondItem="vUy-jt-gjY" secondAttribute="bottom" id="vMr-VQ-r4P"/>
+                    <constraint firstAttribute="bottom" secondItem="vUy-jt-gjY" secondAttribute="bottom" constant="20" id="vMr-VQ-r4P"/>
                 </constraints>
             </view>
             <toolbar key="toolbar" implicitIdentifier="CAE4F278-DC20-4A58-B07E-1580E7B14C87" autosavesConfiguration="NO" allowsUserCustomization="NO" showsBaselineSeparator="NO" displayMode="iconOnly" sizeMode="regular" id="pr3-TD-J2z">
@@ -463,7 +459,7 @@
                     <searchToolbarItem implicitItemIdentifier="A132890F-6B3D-4523-A71B-B00F095057C4" label="Search" paletteLabel="Search" visibilityPriority="1001" id="dv4-Il-y8X">
                         <nil key="toolTip"/>
                         <searchField key="view" focusRingType="none" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ab6-kR-8Io">
-                            <rect key="frame" x="0.0" y="0.0" width="100" height="22"/>
+                            <rect key="frame" x="0.0" y="0.0" width="100" height="24"/>
                             <constraints>
                                 <constraint firstAttribute="width" relation="lessThanOrEqual" constant="200" id="hhF-2O-Qx7"/>
                             </constraints>
@@ -567,7 +563,6 @@
                 <outlet property="audioLibraryView" destination="lpg-UW-pTq" id="FYD-PV-Ce2"/>
                 <outlet property="backwardsNavigationButton" destination="Bzq-ZV-i8j" id="Bac-Kb-ut"/>
                 <outlet property="controlsBar" destination="Uzf-Tf-H8x" id="n0G-92-F2Q"/>
-                <outlet property="controlsBarHeightConstraint" destination="Fps-hR-AFq" id="E4g-JQ-fgx"/>
                 <outlet property="emptyLibraryView" destination="YJf-1r-vaC" id="AJB-eN-4u6"/>
                 <outlet property="forwardsNavigationButton" destination="jzy-je-h2k" id="for-Wa-rd"/>
                 <outlet property="gridVsListSegmentedControl" destination="lIg-5J-C5F" id="u6B-Zx-4mX"/>
@@ -623,6 +618,7 @@
                 <outlet property="timeField" destination="zOB-QJ-TUy" id="mJL-1V-2lQ"/>
                 <outlet property="timeSlider" destination="9Hg-t2-K5z" id="sVe-s8-xW6"/>
                 <outlet property="trailingTimeField" destination="oGd-mG-cFw" id="geo-iq-0th"/>
+                <outlet property="visualEffectView" destination="D5i-Pe-TAl" id="amP-G8-brq"/>
                 <outlet property="volumeSlider" destination="noz-yJ-oH4" id="nbe-1c-lFH"/>
                 <outlet property="volumeUpButton" destination="75c-FF-mgb" id="xRz-F4-n0Z"/>
             </connections>
@@ -631,17 +627,17 @@
             <rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" horizontalScrollElasticity="none" verticalScrollElasticity="none" id="HXH-MZ-tkf">
+                <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="HXH-MZ-tkf">
                     <rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
                     <clipView key="contentView" id="EeU-rT-tSP">
-                        <rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
+                        <rect key="frame" x="0.0" y="0.0" width="852" height="808"/>
                         <autoresizingMask key="autoresizingMask"/>
                         <subviews>
                             <view translatesAutoresizingMaskIntoConstraints="NO" id="OxL-Q0-VBh">
-                                <rect key="frame" x="0.0" y="808" width="851" height="0.0"/>
+                                <rect key="frame" x="0.0" y="808" width="834" height="0.0"/>
                                 <subviews>
                                     <stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="p8n-RC-fWF">
-                                        <rect key="frame" x="0.0" y="0.0" width="851" height="0.0"/>
+                                        <rect key="frame" x="0.0" y="0.0" width="834" height="0.0"/>
                                     </stackView>
                                 </subviews>
                                 <constraints>
@@ -684,7 +680,7 @@
                     <rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
                     <clipView key="contentView" id="SLw-ag-klW">
                         <rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
-                        <autoresizingMask key="autoresizingMask"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <collectionView selectable="YES" allowsMultipleSelection="YES" id="neh-e5-MUa" customClass="VLCLibraryCollectionView">
                                 <rect key="frame" x="0.0" y="0.0" width="875" height="158"/>
@@ -713,7 +709,7 @@
                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                             <clipView key="contentView" id="OqR-YY-weT">
                                 <rect key="frame" x="0.0" y="0.0" width="230" height="808"/>
-                                <autoresizingMask key="autoresizingMask"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
                                     <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" viewBased="YES" id="ceR-Vd-9ss">
                                         <rect key="frame" x="0.0" y="0.0" width="230" height="808"/>
@@ -772,7 +768,7 @@
                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                             <clipView key="contentView" id="0td-vX-CFl">
                                 <rect key="frame" x="0.0" y="0.0" width="638" height="808"/>
-                                <autoresizingMask key="autoresizingMask"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
                                     <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" tableStyle="fullWidth" columnReordering="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="8M4-Y1-r6Z" customClass="VLCLibraryTableView">
                                         <rect key="frame" x="0.0" y="0.0" width="638" height="808"/>
@@ -851,11 +847,11 @@
                 <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7WD-fy-WtJ">
                     <rect key="frame" x="0.0" y="0.0" width="528" height="411"/>
                     <clipView key="contentView" id="5co-vI-cEn">
-                        <rect key="frame" x="0.0" y="0.0" width="528" height="411"/>
-                        <autoresizingMask key="autoresizingMask"/>
+                        <rect key="frame" x="0.0" y="0.0" width="528" height="394"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="firstColumnOnly" columnReordering="NO" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" headerView="4cS-pi-5KZ" viewBased="YES" id="vpJ-Oz-Ebz" customClass="VLCLibraryTableView">
-                                <rect key="frame" x="0.0" y="0.0" width="718" height="383"/>
+                                <rect key="frame" x="0.0" y="0.0" width="718" height="366"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <size key="intercellSpacing" width="3" height="2"/>
                                 <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@@ -877,7 +873,7 @@
                                                 <rect key="frame" x="11" y="1" width="405" height="17"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 <subviews>
-                                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XpY-BL-Ovl">
+                                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XpY-BL-Ovl">
                                                         <rect key="frame" x="0.0" y="0.0" width="405" height="16"/>
                                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
                                                         <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ZeB-Ae-Vhd">
@@ -909,7 +905,7 @@
                                                 <rect key="frame" x="419" y="1" width="80" height="17"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 <subviews>
-                                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QMo-CO-uFe">
+                                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QMo-CO-uFe">
                                                         <rect key="frame" x="0.0" y="0.0" width="80" height="16"/>
                                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
                                                         <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="QqW-Vu-2fV">
@@ -941,7 +937,7 @@
                                                 <rect key="frame" x="502" y="1" width="204" height="17"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 <subviews>
-                                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Vyv-sc-JqL">
+                                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Vyv-sc-JqL">
                                                         <rect key="frame" x="0.0" y="0.0" width="204" height="16"/>
                                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
                                                         <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="Y4L-hX-6Kr">
@@ -961,8 +957,8 @@
                             </tableView>
                         </subviews>
                     </clipView>
-                    <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Xu2-Uw-wBR">
-                        <rect key="frame" x="0.0" y="-16" width="0.0" height="16"/>
+                    <scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Xu2-Uw-wBR">
+                        <rect key="frame" x="0.0" y="394" width="528" height="17"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </scroller>
                     <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="UVE-ma-wE8">
@@ -978,7 +974,7 @@
                     <rect key="frame" x="0.0" y="0.0" width="528" height="411"/>
                     <clipView key="contentView" id="tI4-x3-55j">
                         <rect key="frame" x="0.0" y="0.0" width="528" height="411"/>
-                        <autoresizingMask key="autoresizingMask"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <collectionView selectable="YES" allowsMultipleSelection="YES" id="r7v-GI-W1U" customClass="VLCLibraryCollectionView">
                                 <rect key="frame" x="0.0" y="0.0" width="528" height="411"/>
@@ -1003,7 +999,7 @@
                     <rect key="frame" x="0.0" y="371" width="528" height="40"/>
                     <subviews>
                         <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jfA-Vr-sQc">
-                            <rect key="frame" x="4" y="5" width="38" height="27"/>
+                            <rect key="frame" x="10" y="10" width="26" height="20"/>
                             <buttonCell key="cell" type="push" bezelStyle="rounded" image="NSHomeTemplate" imagePosition="only" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="OHf-j4-3In">
                                 <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                 <font key="font" metaFont="message" size="11"/>
@@ -1060,7 +1056,7 @@
                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                             <clipView key="contentView" id="4uw-9H-2bN">
                                 <rect key="frame" x="0.0" y="0.0" width="298" height="390"/>
-                                <autoresizingMask key="autoresizingMask"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
                                     <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" emptySelection="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="automatic" viewBased="YES" id="hvV-yD-5Kd" customClass="VLCLibraryTableView">
                                         <rect key="frame" x="0.0" y="0.0" width="298" height="390"/>
@@ -1119,7 +1115,7 @@
                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                             <clipView key="contentView" id="Zmo-lc-CDL">
                                 <rect key="frame" x="0.0" y="0.0" width="415" height="390"/>
-                                <autoresizingMask key="autoresizingMask"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
                                     <collectionView selectable="YES" allowsMultipleSelection="YES" id="ZGR-PZ-7h5" customClass="VLCLibraryCollectionView">
                                         <rect key="frame" x="0.0" y="0.0" width="415" height="390"/>
@@ -1154,7 +1150,7 @@
                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                             <clipView key="contentView" id="qva-RZ-DvL">
                                 <rect key="frame" x="0.0" y="0.0" width="312" height="390"/>
-                                <autoresizingMask key="autoresizingMask"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
                                     <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" emptySelection="NO" autosaveColumns="NO" viewBased="YES" id="LNt-ot-2wU" customClass="VLCLibraryTableView">
                                         <rect key="frame" x="0.0" y="0.0" width="312" height="390"/>
@@ -1213,7 +1209,7 @@
                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                             <clipView key="contentView" id="xCC-h9-931">
                                 <rect key="frame" x="0.0" y="0.0" width="401" height="390"/>
-                                <autoresizingMask key="autoresizingMask"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
                                     <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" tableStyle="fullWidth" columnReordering="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="4ll-T2-J16" customClass="VLCLibraryTableView">
                                         <rect key="frame" x="0.0" y="0.0" width="401" height="390"/>
@@ -1276,7 +1272,7 @@
                     <rect key="frame" x="0.0" y="0.0" width="714" height="390"/>
                     <clipView key="contentView" id="2oa-WL-dxA">
                         <rect key="frame" x="0.0" y="0.0" width="714" height="390"/>
-                        <autoresizingMask key="autoresizingMask"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <collectionView selectable="YES" allowsMultipleSelection="YES" id="QAt-jP-zE7" customClass="VLCLibraryCollectionView">
                                 <rect key="frame" x="0.0" y="0.0" width="714" height="390"/>
@@ -1300,11 +1296,11 @@
                 <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="22" horizontalPageScroll="10" verticalLineScroll="22" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QqV-hX-sZw">
                     <rect key="frame" x="0.0" y="0.0" width="714" height="390"/>
                     <clipView key="contentView" id="D1c-vg-zeA">
-                        <rect key="frame" x="0.0" y="0.0" width="714" height="390"/>
-                        <autoresizingMask key="autoresizingMask"/>
+                        <rect key="frame" x="0.0" y="0.0" width="714" height="373"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView identifier="VLCLibrarySongsTableViewIdentifier" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" rowSizeStyle="automatic" headerView="LR0-xA-UlZ" viewBased="YES" id="Xck-iv-pH4" customClass="VLCLibraryTableView">
-                                <rect key="frame" x="0.0" y="0.0" width="1145" height="362"/>
+                                <rect key="frame" x="0.0" y="0.0" width="1145" height="345"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <size key="intercellSpacing" width="17" height="5"/>
                                 <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@@ -1571,7 +1567,7 @@
                         </subviews>
                     </clipView>
                     <scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="2VX-c2-fRL">
-                        <rect key="frame" x="0.0" y="374" width="714" height="16"/>
+                        <rect key="frame" x="0.0" y="373" width="714" height="17"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </scroller>
                     <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="NFb-XZ-MAv">
@@ -1612,7 +1608,7 @@
                     <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" image="VLC" id="1yO-EP-f8Q"/>
                 </imageView>
                 <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="V2G-WY-Ewc" userLabel="Browse Button" customClass="VLCCustomEmptyLibraryBrowseButton">
-                    <rect key="frame" x="298" y="140" width="99" height="29"/>
+                    <rect key="frame" x="298" y="141" width="99" height="28"/>
                     <buttonCell key="cell" type="recessed" title="Browse" bezelStyle="recessed" imagePosition="left" alignment="center" borderStyle="border" inset="2" id="l2n-Ul-S0e">
                         <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
                         <font key="font" metaFont="cellTitle"/>


=====================================
modules/gui/macosx/library/VLCLibraryUIUnits.m
=====================================
@@ -216,10 +216,12 @@ NSString * const VLCLibraryCollectionViewItemAdjustmentKey = @"VLCLibraryCollect
 {
     VLCLibraryWindow * const libraryWindow = VLCMain.sharedInstance.libraryWindow;
     const CGFloat toolbarHeight = libraryWindow.titlebarHeight;
+    const CGFloat controlsBarHeight = VLCLibraryUIUnits.libraryWindowControlsBarHeight;
+    const CGFloat controlsBarPadding = VLCLibraryUIUnits.largeSpacing * 2; // Additional padding for floating controls bar
 
     return NSEdgeInsetsMake(VLCLibraryUIUnits.mediumSpacing + toolbarHeight,
                             VLCLibraryUIUnits.mediumSpacing,
-                            VLCLibraryUIUnits.mediumSpacing,
+                            controlsBarHeight + controlsBarPadding,
                             VLCLibraryUIUnits.mediumSpacing);
 }
 


=====================================
modules/gui/macosx/library/VLCLibraryWindow.h
=====================================
@@ -61,7 +61,6 @@ extern const NSUserInterfaceItemIdentifier VLCLibraryWindowIdentifier;
 @property (readonly) NSView *libraryTargetView;
 
 @property (nonatomic, weak) IBOutlet VLCMainWindowControlsBar *controlsBar;
- at property (readwrite, weak) IBOutlet NSLayoutConstraint *controlsBarHeightConstraint;
 @property (readwrite, weak) IBOutlet NSSegmentedControl *gridVsListSegmentedControl;
 @property (readwrite, weak) IBOutlet NSSplitView *mainSplitView;
 @property (readwrite, weak) IBOutlet NSView *homeLibraryView;


=====================================
modules/gui/macosx/library/VLCLibraryWindow.m
=====================================
@@ -489,7 +489,8 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
 
 - (void)hideControlsBarImmediately
 {
-    self.controlsBarHeightConstraint.constant = 0;
+    self.controlsBar.bottomBarView.hidden = YES;
+    self.controlsBar.bottomBarView.alphaValue = 0;
 }
 
 - (void)hideControlsBar
@@ -497,21 +498,25 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
     [NSAnimationContext runAnimationGroup:^(NSAnimationContext * const context) {
         context.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
         context.duration = VLCLibraryUIUnits.controlsFadeAnimationDuration;
-        self.controlsBarHeightConstraint.animator.constant = 0;
-    } completionHandler:nil];
+        self.controlsBar.bottomBarView.animator.alphaValue = 0;
+    } completionHandler:^{
+        self.controlsBar.bottomBarView.hidden = self.controlsBar.bottomBarView.alphaValue == 0;
+    }];
 }
 
 - (void)showControlsBarImmediately
 {
-    self.controlsBarHeightConstraint.constant = VLCLibraryUIUnits.libraryWindowControlsBarHeight;
+    self.controlsBar.bottomBarView.hidden = NO;
+    self.controlsBar.bottomBarView.alphaValue = 1;
 }
 
 - (void)showControlsBar
 {
+    self.controlsBar.bottomBarView.hidden = NO;
     [NSAnimationContext runAnimationGroup:^(NSAnimationContext * const context) {
         context.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
         context.duration = VLCLibraryUIUnits.controlsFadeAnimationDuration;
-        self.controlsBarHeightConstraint.animator.constant = VLCLibraryUIUnits.libraryWindowControlsBarHeight;
+        self.controlsBar.bottomBarView.animator.alphaValue = 1;
     } completionHandler:nil];
 }
 


=====================================
modules/gui/macosx/library/VLCLibraryWindowSplitViewController.m
=====================================
@@ -29,6 +29,9 @@
 
 #import "main/VLCMain.h"
 
+#import "views/VLCBottomBarView.h"
+
+#import "windows/controlsbar/VLCMainWindowControlsBar.h"
 #import "windows/video/VLCMainVideoViewController.h"
 
 @interface VLCLibraryWindowSplitViewController ()
@@ -43,10 +46,11 @@
 {
     [super viewDidLoad];
 
-    [VLCMain.sharedInstance.libraryWindow.videoViewController.view addObserver:self
-                                                                    forKeyPath:@"hidden"
-                                                                       options:0
-                                                                       context:nil];
+    VLCLibraryWindow * const libraryWindow = VLCMain.sharedInstance.libraryWindow;
+    [libraryWindow.videoViewController.view addObserver:self
+                                            forKeyPath:@"hidden"
+                                               options:0
+                                               context:nil];
 
     self.splitView.wantsLayer = YES;
 
@@ -78,6 +82,16 @@
         NSSplitViewItemCollapseBehaviorPreferResizingSiblingsWithFixedSplitView;
 
     self.splitViewItems = @[_navSidebarItem, _libraryTargetViewItem, self.multifunctionSidebarItem];
+
+    VLCMainWindowControlsBar * const controlsBar = libraryWindow.controlsBar;
+    VLCBottomBarView * const bottomBarView = controlsBar.bottomBarView;
+    bottomBarView.translatesAutoresizingMaskIntoConstraints = NO;
+    [NSLayoutConstraint activateConstraints:@[
+        [bottomBarView.leadingAnchor constraintEqualToAnchor:self.libraryTargetViewController.view.leadingAnchor
+                                                    constant:VLCLibraryUIUnits.largeSpacing * 2],
+        [bottomBarView.trailingAnchor constraintEqualToAnchor:self.libraryTargetViewController.view.trailingAnchor
+                                                     constant:-(VLCLibraryUIUnits.largeSpacing * 2)],
+    ]];
 }
 
 - (void)observeValueForKeyPath:(NSString *)keyPath


=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
=====================================
@@ -279,6 +279,13 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = @"VLCLibraryPlaceholderAudi
     _audioLibraryGridModeSplitViewListSelectionCollectionViewScrollView.automaticallyAdjustsContentInsets = NO;
     _audioLibraryGridModeSplitViewListSelectionCollectionViewScrollView.contentInsets = audioScrollViewContentInsets;
     _audioLibraryGridModeSplitViewListSelectionCollectionViewScrollView.scrollerInsets = audioScrollViewScrollerInsets;
+
+    // Songs table view needs bottom padding for controls bar
+    const CGFloat controlsBarHeight = VLCLibraryUIUnits.libraryWindowControlsBarHeight;
+    const CGFloat controlsBarPadding = VLCLibraryUIUnits.largeSpacing * 2;
+    NSClipView *clipView = _audioSongTableViewScrollView.contentView;
+    clipView.automaticallyAdjustsContentInsets = NO;
+    clipView.contentInsets = NSEdgeInsetsMake(0, 0, controlsBarHeight + controlsBarPadding, 0);
 }
 
 #pragma mark - Superclass property overrides


=====================================
modules/gui/macosx/views/VLCBottomBarView.m
=====================================
@@ -22,6 +22,7 @@
  *****************************************************************************/
 
 #import "VLCBottomBarView.h"
+#include "library/VLCLibraryUIUnits.h"
 
 #import "extensions/NSColor+VLCAdditions.h"
 #import "extensions/NSView+VLCAdditions.h"
@@ -67,6 +68,7 @@
     self.wantsLayer = YES;
     self.needsDisplay = YES;
     self.drawBorder = YES;
+    self.layer.masksToBounds = YES;
 }
 
 - (void)drawRect:(NSRect)dirtyRect
@@ -78,13 +80,14 @@
     }
 
     const NSRect barFrame = self.frame;
-    NSBezierPath * const separatorPath = NSBezierPath.bezierPath;
-    [separatorPath moveToPoint:NSMakePoint(NSMinX(barFrame), NSMaxY(barFrame) - 0.5)];
-    [separatorPath lineToPoint:NSMakePoint(NSMaxX(barFrame), NSMaxY(barFrame) - 0.5)];
-    separatorPath.lineWidth = 1.0;
-
+    const CGFloat cornerRadius = VLCLibraryUIUnits.cornerRadius;
+    NSBezierPath * const borderPath = [NSBezierPath bezierPathWithRoundedRect:barFrame 
+                                                                      xRadius:cornerRadius 
+                                                                      yRadius:cornerRadius];
+    
     [NSColor.VLCSubtleBorderColor setStroke];
-    [separatorPath stroke];
+    borderPath.lineWidth = VLCLibraryUIUnits.borderThickness;
+    [borderPath stroke];
 }
 
 @end


=====================================
modules/gui/macosx/windows/controlsbar/VLCMainWindowControlsBar.h
=====================================
@@ -44,6 +44,7 @@
 
 @property (readwrite, strong) IBOutlet VLCTrackingView *thumbnailTrackingView;
 @property (readwrite, strong) IBOutlet NSView *openMainVideoViewButtonOverlay;
+ at property (readwrite, strong) IBOutlet NSVisualEffectView *visualEffectView;
 
 - (IBAction)stop:(id)sender;
 - (IBAction)toggleFavorite:(id)sender;


=====================================
modules/gui/macosx/windows/controlsbar/VLCMainWindowControlsBar.m
=====================================
@@ -27,8 +27,10 @@
 #import "extensions/NSColor+VLCAdditions.h"
 #import "extensions/NSImage+VLCAdditions.h"
 #import "extensions/NSString+Helpers.h"
+#import "extensions/NSView+VLCAdditions.h"
 
 #import "library/VLCInputItem.h"
+#import "library/VLCLibraryUIUnits.h"
 #import "library/VLCLibraryWindow.h"
 
 #import "main/VLCMain.h"
@@ -38,6 +40,7 @@
 #import "playqueue/VLCPlayQueueModel.h"
 #import "playqueue/VLCPlayerController.h"
 
+#import "views/VLCBottomBarView.h"
 #import "views/VLCTimeField.h"
 #import "views/VLCTrackingView.h"
 #import "views/VLCVolumeSlider.h"
@@ -62,6 +65,24 @@
 - (void)awakeFromNib
 {
     [super awakeFromNib];
+
+    if (@available(macOS 26.0, *)) {
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000
+        NSGlassEffectView * const glassEffectView = [[NSGlassEffectView alloc] init];
+        glassEffectView.translatesAutoresizingMaskIntoConstraints = NO;
+        [self.bottomBarView addSubview:glassEffectView positioned:NSWindowBelow relativeTo:self.dropView];
+        [self.visualEffectView removeFromSuperview];
+        glassEffectView.contentView = self.dropView;
+        [glassEffectView applyConstraintsToFillSuperview];
+        glassEffectView.cornerRadius = CGFLOAT_MAX;
+        self.bottomBarView.drawBorder = NO;
+#endif
+    } else {
+        self.visualEffectView.wantsLayer = YES;
+        self.visualEffectView.layer.cornerRadius = VLCLibraryUIUnits.cornerRadius;
+        self.visualEffectView.layer.masksToBounds = YES;
+    }
+
     _playQueueController = VLCMain.sharedInstance.playQueueController;
     _playerController = _playQueueController.playerController;
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/f764c2e8922af31788ae185ef60d243baefced68...fb021acf77500c5741b868756d70af28f81fad87

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/f764c2e8922af31788ae185ef60d243baefced68...fb021acf77500c5741b868756d70af28f81fad87
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