[vlc-commits] macosx/library: make video cells match desired appearance
Felix Paul Kühne
git at videolan.org
Mon Apr 29 19:27:06 CEST 2019
vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Sun Apr 28 14:07:54 2019 +0200| [005b007f9a5e825c2ca92f49cf1d9de7dd854f98] | committer: Felix Paul Kühne
macosx/library: make video cells match desired appearance
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=005b007f9a5e825c2ca92f49cf1d9de7dd854f98
---
.../package/macosx/VLC.xcodeproj/project.pbxproj | 18 +++--
modules/gui/macosx/Makefile.am | 6 +-
.../macosx/Resources/librarywindow/ellipsis.png | Bin 0 -> 136 bytes
.../macosx/Resources/librarywindow/ellipsis at 2x.png | Bin 0 -> 170 bytes
.../librarywindow/libraryCellGradient at 1x.png | Bin 631 -> 0 bytes
.../librarywindow/libraryCellGradient at 2x.png | Bin 659 -> 0 bytes
.../macosx/Resources/librarywindow/libraryPlay.png | Bin 0 -> 1710 bytes
.../Resources/librarywindow/libraryPlay at 2x.png | Bin 0 -> 2245 bytes
.../gui/macosx/UI/VLCLibraryCollectionViewItem.xib | 71 +++++++++---------
.../macosx/UI/VLCLibraryFolderManagementWindow.xib | 2 +-
modules/gui/macosx/UI/VLCLibraryWindow.xib | 5 +-
.../macosx/library/VLCLibraryCollectionViewItem.h | 6 ++
.../macosx/library/VLCLibraryCollectionViewItem.m | 79 +++++++++++++++++++++
13 files changed, 140 insertions(+), 47 deletions(-)
diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
index d9c698f778..cd17eb87d8 100644
--- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
@@ -439,14 +439,16 @@
7D0F64032202047900FDB91F /* VLCLibraryCollectionViewItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryCollectionViewItem.h; sourceTree = "<group>"; };
7D0F64042202047900FDB91F /* VLCLibraryCollectionViewItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryCollectionViewItem.m; sourceTree = "<group>"; };
7D0F64052202047900FDB91F /* VLCLibraryCollectionViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VLCLibraryCollectionViewItem.xib; sourceTree = "<group>"; };
- 7D0F64082202058700FDB91F /* libraryCellGradient at 1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "libraryCellGradient at 1x.png"; path = "../librarywindow/libraryCellGradient at 1x.png"; sourceTree = "<group>"; };
- 7D0F64092202058700FDB91F /* libraryCellGradient at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "libraryCellGradient at 2x.png"; path = "../librarywindow/libraryCellGradient at 2x.png"; sourceTree = "<group>"; };
7D0F640A2202163E00FDB91F /* VLCPlaylistDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCPlaylistDataSource.h; sourceTree = "<group>"; };
7D0F640B2202163E00FDB91F /* VLCPlaylistDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCPlaylistDataSource.m; sourceTree = "<group>"; };
7D28E6342275B4820098D30E /* NSColor+VLCAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSColor+VLCAdditions.h"; sourceTree = "<group>"; };
7D28E6352275B4820098D30E /* NSColor+VLCAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSColor+VLCAdditions.m"; sourceTree = "<group>"; };
7D28E6372275B7340098D30E /* NSFont+VLCAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSFont+VLCAdditions.h"; sourceTree = "<group>"; };
7D28E6382275B7340098D30E /* NSFont+VLCAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSFont+VLCAdditions.m"; sourceTree = "<group>"; };
+ 7D28E63D2275C8660098D30E /* ellipsis.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ellipsis.png; path = librarywindow/ellipsis.png; sourceTree = "<group>"; };
+ 7D28E63E2275C8660098D30E /* ellipsis at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ellipsis at 2x.png"; path = "librarywindow/ellipsis at 2x.png"; sourceTree = "<group>"; };
+ 7D28E63F2275C9C70098D30E /* libraryPlay at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "libraryPlay at 2x.png"; path = "librarywindow/libraryPlay at 2x.png"; sourceTree = "<group>"; };
+ 7D28E6402275C9C70098D30E /* libraryPlay.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = libraryPlay.png; path = librarywindow/libraryPlay.png; sourceTree = "<group>"; };
7D2E0ED920CD204D0033A221 /* VLCWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCWindow.m; sourceTree = "<group>"; };
7D2E0EDA20CD204D0033A221 /* VLCWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCWindow.h; sourceTree = "<group>"; };
7D2E0EDC20CD206F0033A221 /* VLCVideoWindowCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCVideoWindowCommon.h; sourceTree = "<group>"; };
@@ -1291,13 +1293,15 @@
name = misc;
sourceTree = "<group>";
};
- 7D0F64072202057C00FDB91F /* Library Window */ = {
+ 7D28E63C2275C80E0098D30E /* Library Window */ = {
isa = PBXGroup;
children = (
- 7D0F64082202058700FDB91F /* libraryCellGradient at 1x.png */,
- 7D0F64092202058700FDB91F /* libraryCellGradient at 2x.png */,
+ 7D28E63D2275C8660098D30E /* ellipsis.png */,
+ 7D28E63E2275C8660098D30E /* ellipsis at 2x.png */,
+ 7D28E6402275C9C70098D30E /* libraryPlay.png */,
+ 7D28E63F2275C9C70098D30E /* libraryPlay at 2x.png */,
);
- path = "Library Window";
+ name = "Library Window";
sourceTree = "<group>";
};
7D903EB4224393C700917358 /* core dependencies */ = {
@@ -1380,7 +1384,7 @@
CC0430EE13B2461A00D7D52E /* UI Graphics */ = {
isa = PBXGroup;
children = (
- 7D0F64072202057C00FDB91F /* Library Window */,
+ 7D28E63C2275C80E0098D30E /* Library Window */,
6B82255A1E4D2BE400833BE1 /* Main Window */,
6B8229CB1E4D2D2C00833BE1 /* Sidebar Icons */,
6B8229FD1E4D2DB400833BE1 /* noart.png */,
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index 658215ceb4..fc804d9ffc 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -297,8 +297,10 @@ libmacosx_plugin_la_RES = \
gui/macosx/Resources/File-Icons/wav.icns \
gui/macosx/Resources/File-Icons/wma.icns \
gui/macosx/Resources/File-Icons/wmv.icns \
- gui/macosx/Resources/librarywindow/libraryCellGradient at 1x.png \
- gui/macosx/Resources/librarywindow/libraryCellGradient at 2x.png \
+ gui/macosx/Resources/librarywindow/ellipsis.png \
+ gui/macosx/Resources/librarywindow/ellipsis at 2x.png \
+ gui/macosx/Resources/librarywindow/libraryPlay.png \
+ gui/macosx/Resources/librarywindow/libraryPlay at 2x.png \
gui/macosx/Resources/mainwindow/backward-3btns-pressed.png \
gui/macosx/Resources/mainwindow/backward-3btns-pressed at 2x.png \
gui/macosx/Resources/mainwindow/backward-3btns.png \
diff --git a/modules/gui/macosx/Resources/librarywindow/ellipsis.png b/modules/gui/macosx/Resources/librarywindow/ellipsis.png
new file mode 100644
index 0000000000..85ed54a0e7
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/ellipsis.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/ellipsis at 2x.png b/modules/gui/macosx/Resources/librarywindow/ellipsis at 2x.png
new file mode 100644
index 0000000000..424ad8f32e
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/ellipsis at 2x.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/libraryCellGradient at 1x.png b/modules/gui/macosx/Resources/librarywindow/libraryCellGradient at 1x.png
deleted file mode 100644
index ae65fd2ae5..0000000000
Binary files a/modules/gui/macosx/Resources/librarywindow/libraryCellGradient at 1x.png and /dev/null differ
diff --git a/modules/gui/macosx/Resources/librarywindow/libraryCellGradient at 2x.png b/modules/gui/macosx/Resources/librarywindow/libraryCellGradient at 2x.png
deleted file mode 100644
index 6c88fd40f3..0000000000
Binary files a/modules/gui/macosx/Resources/librarywindow/libraryCellGradient at 2x.png and /dev/null differ
diff --git a/modules/gui/macosx/Resources/librarywindow/libraryPlay.png b/modules/gui/macosx/Resources/librarywindow/libraryPlay.png
new file mode 100644
index 0000000000..1d11778aa7
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/libraryPlay.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/libraryPlay at 2x.png b/modules/gui/macosx/Resources/librarywindow/libraryPlay at 2x.png
new file mode 100644
index 0000000000..771af5950f
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/libraryPlay at 2x.png differ
diff --git a/modules/gui/macosx/UI/VLCLibraryCollectionViewItem.xib b/modules/gui/macosx/UI/VLCLibraryCollectionViewItem.xib
index 1315f68822..87147d3da2 100644
--- a/modules/gui/macosx/UI/VLCLibraryCollectionViewItem.xib
+++ b/modules/gui/macosx/UI/VLCLibraryCollectionViewItem.xib
@@ -17,27 +17,40 @@
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
- <customView id="Hz6-mo-xeY">
- <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+ <customView id="Hz6-mo-xeY" customClass="VLCLibraryCollectionViewTrackingView">
+ <rect key="frame" x="0.0" y="0.0" width="256" height="214"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="2aB-sB-hfY" customClass="VLCImageView">
- <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+ <rect key="frame" x="0.0" y="46" width="256" height="168"/>
+ <subviews>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S3I-5Z-qgS">
+ <rect key="frame" x="96" y="52" width="64" height="64"/>
+ <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="libraryPlay" imagePosition="only" alignment="center" inset="2" id="IHP-p1-d0R">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <connections>
+ <action selector="playInstantly:" target="-2" id="E2B-oj-rx3"/>
+ </connections>
+ </button>
+ </subviews>
+ <constraints>
+ <constraint firstItem="S3I-5Z-qgS" firstAttribute="centerX" secondItem="2aB-sB-hfY" secondAttribute="centerX" id="Seo-tS-piW"/>
+ <constraint firstAttribute="height" constant="168" id="Vrp-AD-scC"/>
+ <constraint firstItem="S3I-5Z-qgS" firstAttribute="centerY" secondItem="2aB-sB-hfY" secondAttribute="centerY" id="ZWU-oW-OVa"/>
+ </constraints>
</customView>
- <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="A5y-ue-y7t">
- <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
- <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="axesIndependently" image="libraryCellGradient" id="kbU-NG-wPM"/>
- </imageView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OBS-Eh-1mT">
- <rect key="frame" x="18" y="20" width="52" height="24"/>
- <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="7Hy-o3-LvX">
+ <rect key="frame" x="-2" y="18" width="52" height="24"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" title="Label" usesSingleLineMode="YES" id="7Hy-o3-LvX">
<font key="font" size="20" name=".AppleSystemUIFont"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VAn-gF-QiZ">
- <rect key="frame" x="420" y="20" width="42" height="19"/>
+ <rect key="frame" x="-2" y="0.0" width="42" height="19"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="LSS-jh-llZ">
<font key="font" size="15" name=".AppleSystemUIFont"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -45,8 +58,12 @@
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ubz-8I-W2F">
- <rect key="frame" x="417" y="224" width="49" height="32"/>
- <buttonCell key="cell" type="push" title="+" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6ko-MM-ds0">
+ <rect key="frame" x="216" y="174" width="20" height="20"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="20" id="XhX-7U-Nxj"/>
+ <constraint firstAttribute="height" constant="20" id="ZDT-YM-Cbr"/>
+ </constraints>
+ <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ellipsis" imagePosition="only" alignment="center" inset="2" id="6ko-MM-ds0">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
@@ -54,39 +71,23 @@
<action selector="addToPlaylist:" target="-2" id="2C9-Rn-VAb"/>
</connections>
</button>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S3I-5Z-qgS">
- <rect key="frame" x="368" y="224" width="49" height="32"/>
- <buttonCell key="cell" type="push" title="P" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="IHP-p1-d0R">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- <connections>
- <action selector="playInstantly:" target="-2" id="E2B-oj-rx3"/>
- </connections>
- </button>
</subviews>
<constraints>
- <constraint firstItem="VAn-gF-QiZ" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="OBS-Eh-1mT" secondAttribute="trailing" constant="20" id="2di-oZ-tsC"/>
+ <constraint firstItem="VAn-gF-QiZ" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="0TA-ug-pKW"/>
+ <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="OBS-Eh-1mT" secondAttribute="trailing" id="457-oy-EbD"/>
<constraint firstItem="Ubz-8I-W2F" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" id="8Qf-Un-Gdl"/>
- <constraint firstAttribute="bottom" secondItem="2aB-sB-hfY" secondAttribute="bottom" id="C2H-Jc-A9V"/>
- <constraint firstItem="Ubz-8I-W2F" firstAttribute="leading" secondItem="S3I-5Z-qgS" secondAttribute="trailing" constant="12" id="DZe-x4-j0v"/>
- <constraint firstItem="A5y-ue-y7t" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="NpD-8l-D5s"/>
- <constraint firstAttribute="trailing" secondItem="VAn-gF-QiZ" secondAttribute="trailing" constant="20" id="Ol6-wf-2dJ"/>
+ <constraint firstAttribute="bottom" secondItem="VAn-gF-QiZ" secondAttribute="bottom" id="Kp0-Hx-3Ek"/>
<constraint firstItem="2aB-sB-hfY" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="YP6-lv-ECe"/>
<constraint firstAttribute="trailing" secondItem="Ubz-8I-W2F" secondAttribute="trailing" constant="20" id="ZVz-SL-rxZ"/>
- <constraint firstAttribute="bottom" secondItem="A5y-ue-y7t" secondAttribute="bottom" id="cnQ-bx-Fmn"/>
- <constraint firstAttribute="bottom" secondItem="OBS-Eh-1mT" secondAttribute="bottom" constant="20" id="dy4-gP-Sdi"/>
- <constraint firstItem="Ubz-8I-W2F" firstAttribute="centerY" secondItem="S3I-5Z-qgS" secondAttribute="centerY" id="fTo-dl-S2N"/>
<constraint firstAttribute="trailing" secondItem="2aB-sB-hfY" secondAttribute="trailing" id="oZw-Ab-83p"/>
- <constraint firstAttribute="trailing" secondItem="A5y-ue-y7t" secondAttribute="trailing" id="rKQ-WW-oC6"/>
<constraint firstItem="2aB-sB-hfY" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="t9g-tX-AQX"/>
- <constraint firstItem="VAn-gF-QiZ" firstAttribute="bottom" secondItem="OBS-Eh-1mT" secondAttribute="bottom" id="ukj-ba-ask"/>
- <constraint firstItem="A5y-ue-y7t" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="x7v-58-kKz"/>
- <constraint firstItem="OBS-Eh-1mT" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="yvp-xr-geN"/>
+ <constraint firstItem="OBS-Eh-1mT" firstAttribute="top" secondItem="2aB-sB-hfY" secondAttribute="bottom" constant="4" id="vJy-Kf-4Jh"/>
+ <constraint firstItem="OBS-Eh-1mT" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="yvp-xr-geN"/>
</constraints>
</customView>
</objects>
<resources>
- <image name="libraryCellGradient" width="2" height="190"/>
+ <image name="ellipsis" width="17" height="3"/>
+ <image name="libraryPlay" width="64" height="64"/>
</resources>
</document>
diff --git a/modules/gui/macosx/UI/VLCLibraryFolderManagementWindow.xib b/modules/gui/macosx/UI/VLCLibraryFolderManagementWindow.xib
index 580517ec65..bfb18204fa 100644
--- a/modules/gui/macosx/UI/VLCLibraryFolderManagementWindow.xib
+++ b/modules/gui/macosx/UI/VLCLibraryFolderManagementWindow.xib
@@ -98,7 +98,7 @@
<rect key="frame" x="1" y="318" width="636" height="16"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
- <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="wbF-0g-t3S">
+ <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="wbF-0g-t3S">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
diff --git a/modules/gui/macosx/UI/VLCLibraryWindow.xib b/modules/gui/macosx/UI/VLCLibraryWindow.xib
index 857e20fc7e..a5c5e0c1ad 100644
--- a/modules/gui/macosx/UI/VLCLibraryWindow.xib
+++ b/modules/gui/macosx/UI/VLCLibraryWindow.xib
@@ -52,8 +52,9 @@
<collectionView selectable="YES" id="B8x-e8-7zp" customClass="VLCLibraryCollectionView">
<rect key="frame" x="0.0" y="0.0" width="242" height="291"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
- <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="10" minimumLineSpacing="10" id="Rag-cM-k1g">
- <size key="itemSize" width="240" height="120"/>
+ <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="20" minimumLineSpacing="20" id="Rag-cM-k1g">
+ <size key="itemSize" width="256" height="214"/>
+ <edgeInsets key="sectionInset" left="20" right="20" top="0.0" bottom="0.0"/>
</collectionViewFlowLayout>
<color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="secondaryBackgroundColor" name="controlAlternatingRowColor" catalog="System" colorSpace="catalog"/>
diff --git a/modules/gui/macosx/library/VLCLibraryCollectionViewItem.h b/modules/gui/macosx/library/VLCLibraryCollectionViewItem.h
index 6c3cc45cab..df25052046 100644
--- a/modules/gui/macosx/library/VLCLibraryCollectionViewItem.h
+++ b/modules/gui/macosx/library/VLCLibraryCollectionViewItem.h
@@ -44,4 +44,10 @@ extern NSString *VLCLibraryCellIdentifier;
@end
+ at interface VLCLibraryCollectionViewTrackingView : NSView
+
+ at property (readwrite, assign) NSButton *buttonToHide;
+
+ at end
+
NS_ASSUME_NONNULL_END
diff --git a/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m b/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
index 7bf3cb1bdd..84817d54ad 100644
--- a/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
+++ b/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
@@ -28,6 +28,8 @@
#import "library/VLCLibraryDataTypes.h"
#import "views/VLCImageView.h"
#import "extensions/NSString+Helpers.h"
+#import "extensions/NSFont+VLCAdditions.h"
+#import "extensions/NSColor+VLCAdditions.h"
NSString *VLCLibraryCellIdentifier = @"VLCLibraryCellIdentifier";
@@ -51,6 +53,48 @@ NSString *VLCLibraryCellIdentifier = @"VLCLibraryCellIdentifier";
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
+ if (@available(macOS 10_14, *)) {
+ [[NSApplication sharedApplication] removeObserver:self forKeyPath:@"effectiveAppearance"];
+ }
+}
+
+- (void)awakeFromNib
+{
+ self.playInstantlyButton.hidden = YES;
+ [(VLCLibraryCollectionViewTrackingView *)self.view setButtonToHide:self.playInstantlyButton];
+ self.mediaTitleTextField.font = [NSFont VLClibraryCellTitleFont];
+ self.durationTextField.font = [NSFont VLClibraryCellSubtitleFont];
+ self.durationTextField.textColor = [NSColor VLClibrarySubtitleColor];
+
+ if (@available(macOS 10_14, *)) {
+ [[NSApplication sharedApplication] addObserver:self
+ forKeyPath:@"effectiveAppearance"
+ options:0
+ context:nil];
+ }
+
+ [self updateColoredAppearance];
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath
+ ofObject:(id)object
+ change:(NSDictionary<NSKeyValueChangeKey,id> *)change
+ context:(void *)context
+{
+ [self updateColoredAppearance];
+}
+
+- (void)updateColoredAppearance
+{
+ if (@available(macOS 10_14, *)) {
+ if ([self.view.effectiveAppearance.name isEqualToString:NSAppearanceNameDarkAqua]) {
+ self.mediaTitleTextField.textColor = [NSColor VLClibraryDarkTitleColor];
+ } else {
+ self.mediaTitleTextField.textColor = [NSColor VLClibraryLightTitleColor];
+ }
+ } else {
+ self.mediaTitleTextField.textColor = [NSColor VLClibraryLightTitleColor];
+ }
}
#pragma mark - view representation
@@ -123,3 +167,38 @@ NSString *VLCLibraryCellIdentifier = @"VLCLibraryCellIdentifier";
}
@end
+
+ at interface VLCLibraryCollectionViewTrackingView ()
+{
+ NSTrackingArea *_trackingArea;
+}
+ at end
+
+ at implementation VLCLibraryCollectionViewTrackingView
+
+- (void)mouseExited:(NSEvent *)event
+{
+ self.buttonToHide.hidden = YES;
+}
+
+- (void)mouseEntered:(NSEvent *)event
+{
+ self.buttonToHide.hidden = NO;
+}
+
+- (void)updateTrackingAreas
+{
+ [super updateTrackingAreas];
+ if(_trackingArea != nil) {
+ [self removeTrackingArea:_trackingArea];
+ }
+
+ NSTrackingAreaOptions trackingAreaOptions = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
+ _trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
+ options:trackingAreaOptions
+ owner:self
+ userInfo:nil];
+ [self addTrackingArea:_trackingArea];
+}
+
+ at end
More information about the vlc-commits
mailing list