[vlc-commits] [Git][videolan/vlc][master] macos: make playback time labels button-backed

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Thu Jul 2 12:55:03 UTC 2026



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


Commits:
f4fa30dc by Serhii Bykov at 2026-07-02T14:21:23+02:00
macos: make playback time labels button-backed

- - - - -


7 changed files:

- modules/gui/macosx/UI/VLCClassicMainVideoView.xib
- modules/gui/macosx/UI/VLCDetachedAudioWindow.xib
- modules/gui/macosx/UI/VLCFullScreenPanel.xib
- modules/gui/macosx/UI/VLCLibraryWindow.xib
- modules/gui/macosx/UI/VLCMainVideoView.xib
- modules/gui/macosx/views/VLCTimeField.h
- modules/gui/macosx/views/VLCTimeField.m


Changes:

=====================================
modules/gui/macosx/UI/VLCClassicMainVideoView.xib
=====================================
@@ -221,17 +221,16 @@
                                             <stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="r0b-Xe-LxM">
                                                 <rect key="frame" x="268" y="12" width="468" height="14"/>
                                                 <subviews>
-                                                    <textField wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="1000" verticalHuggingPriority="1000" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="6Bn-cR-4m1" customClass="VLCTimeField">
+                                                    <button wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="1000" verticalHuggingPriority="1000" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="6Bn-cR-4m1" customClass="VLCTimeField">
                                                         <rect key="frame" x="-2" y="0.0" width="79" height="14"/>
                                                         <constraints>
                                                             <constraint firstAttribute="width" constant="75" id="bmu-4m-sw8"/>
                                                         </constraints>
-                                                        <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="right" placeholderString="0:00" id="nPG-7X-HEG">
+                                                        <buttonCell key="cell" type="push" title="0:00" bezelStyle="regularSquare" imagePosition="overlaps" alignment="right" controlSize="small" borderStyle="border" inset="2" id="nPG-7X-HEG">
                                                             <font key="font" metaFont="smallSystem"/>
                                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
-                                                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                                                        </textFieldCell>
-                                                    </textField>
+                                                        </buttonCell>
+                                                    </button>
                                                     <slider verticalHuggingPriority="1000" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="YQG-rd-w0w" customClass="VLCPlaybackProgressSlider">
                                                         <rect key="frame" x="83" y="0.0" width="302" height="14"/>
                                                         <sliderCell key="cell" controlSize="small" continuous="YES" state="on" alignment="left" maxValue="1" tickMarkPosition="above" sliderType="linear" id="hmW-vO-cJs" customClass="VLCPlaybackProgressSliderCell"/>
@@ -239,17 +238,16 @@
                                                             <action selector="timeSliderAction:" target="3" id="G20-RN-DbG"/>
                                                         </connections>
                                                     </slider>
-                                                    <textField wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="1000" verticalHuggingPriority="1000" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="3SA-Ee-NRs" customClass="VLCTimeField">
+                                                    <button wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="1000" verticalHuggingPriority="1000" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="3SA-Ee-NRs" customClass="VLCTimeField">
                                                         <rect key="frame" x="391" y="0.0" width="79" height="14"/>
                                                         <constraints>
                                                             <constraint firstAttribute="width" constant="75" id="gtl-d1-bUT"/>
                                                         </constraints>
-                                                        <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" placeholderString="0:00" usesSingleLineMode="YES" id="8WT-Uq-1VQ">
+                                                        <buttonCell key="cell" type="push" title="0:00" bezelStyle="regularSquare" imagePosition="overlaps" alignment="left" controlSize="small" borderStyle="border" inset="2" id="8WT-Uq-1VQ">
                                                             <font key="font" metaFont="smallSystem"/>
                                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
-                                                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                                                        </textFieldCell>
-                                                    </textField>
+                                                        </buttonCell>
+                                                    </button>
                                                 </subviews>
                                                 <visibilityPriorities>
                                                     <integer value="1000"/>


=====================================
modules/gui/macosx/UI/VLCDetachedAudioWindow.xib
=====================================
@@ -151,7 +151,7 @@
                                                     <action selector="timeSliderAction:" target="3" id="46"/>
                                                 </connections>
                                             </slider>
-                                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="VLCTimeField">
+                                            <button focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="VLCTimeField">
                                                 <rect key="frame" x="446" y="34" width="46" height="13"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="42" id="EvZ-Sy-m25"/>
@@ -160,12 +160,11 @@
                                                 <shadow key="shadow" blurRadius="1">
                                                     <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                 </shadow>
-                                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="center" title="00:00" id="16">
+                                                <buttonCell key="cell" type="push" title="00:00" bezelStyle="regularSquare" imagePosition="overlaps" alignment="center" borderStyle="border" inset="2" id="16">
                                                     <font key="font" metaFont="systemBold" size="10"/>
                                                     <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
-                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                </textFieldCell>
-                                            </textField>
+                                                </buttonCell>
+                                            </button>
                                             <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xR4-jH-evo">
                                                 <rect key="frame" x="373" y="10" width="117" height="32"/>
                                                 <subviews>


=====================================
modules/gui/macosx/UI/VLCFullScreenPanel.xib
=====================================
@@ -37,28 +37,26 @@
                 <rect key="frame" x="0.0" y="0.0" width="483" height="84"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nJc-M4-sMF" customClass="VLCTimeField">
+                    <button horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nJc-M4-sMF" customClass="VLCTimeField">
                         <rect key="frame" x="18" y="61" width="79" height="14"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="75" id="IGO-bJ-xu2"/>
                         </constraints>
-                        <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="0:00" id="ebb-BZ-1l4">
+                        <buttonCell key="cell" type="push" title="0:00" bezelStyle="regularSquare" imagePosition="overlaps" alignment="left" controlSize="small" borderStyle="border" inset="2" id="ebb-BZ-1l4">
                             <font key="font" metaFont="smallSystem"/>
                             <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                        </textFieldCell>
-                    </textField>
-                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T3x-es-c7v" customClass="VLCTimeField">
+                        </buttonCell>
+                    </button>
+                    <button horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T3x-es-c7v" customClass="VLCTimeField">
                         <rect key="frame" x="386" y="61" width="79" height="14"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="75" id="m9r-7l-uQt"/>
                         </constraints>
-                        <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="right" placeholderString="∞" id="PYh-Xz-irE">
+                        <buttonCell key="cell" type="push" title="∞" bezelStyle="regularSquare" imagePosition="overlaps" alignment="right" controlSize="small" borderStyle="border" inset="2" id="PYh-Xz-irE">
                             <font key="font" metaFont="smallSystem"/>
                             <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                        </textFieldCell>
-                    </textField>
+                        </buttonCell>
+                    </button>
                     <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Vd8-0f-Usz">
                         <rect key="frame" x="98" y="61" width="287" height="14"/>
                         <textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="center" placeholderString="Nothing Playing" usesSingleLineMode="YES" id="uA0-hc-yIU">


=====================================
modules/gui/macosx/UI/VLCLibraryWindow.xib
=====================================
@@ -152,17 +152,16 @@
                                                     <real value="3.4028234663852886e+38"/>
                                                 </customSpacing>
                                             </stackView>
-                                            <textField wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zOB-QJ-TUy" customClass="VLCTimeField">
+                                            <button wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zOB-QJ-TUy" customClass="VLCTimeField">
                                                 <rect key="frame" x="42" y="3" width="44" height="11"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" constant="40" id="Rox-Cf-MSz"/>
                                                 </constraints>
-                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="00:00" id="q8L-S3-Ylc">
+                                                <buttonCell key="cell" type="push" title="00:00" bezelStyle="regularSquare" imagePosition="overlaps" alignment="right" borderStyle="border" inset="2" id="q8L-S3-Ylc">
                                                     <font key="font" metaFont="miniSystem"/>
                                                     <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
-                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                </textFieldCell>
-                                            </textField>
+                                                </buttonCell>
+                                            </button>
                                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="SM6-nx-NKD" customClass="VLCTrackingView">
                                                 <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
                                                 <subviews>
@@ -228,17 +227,16 @@
                                                     <action selector="timeSliderAction:" target="Uzf-Tf-H8x" id="eDh-39-Ej1"/>
                                                 </connections>
                                             </slider>
-                                            <textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oGd-mG-cFw" customClass="VLCTimeField">
+                                            <button 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>
-                                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="left" title="-00:00" id="adD-oG-KsD">
+                                                <buttonCell key="cell" type="push" title="-00:00" bezelStyle="regularSquare" imagePosition="overlaps" alignment="left" borderStyle="border" inset="2" id="adD-oG-KsD">
                                                     <font key="font" metaFont="miniSystem"/>
                                                     <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
-                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                </textFieldCell>
-                                            </textField>
+                                                </buttonCell>
+                                            </button>
                                         </subviews>
                                         <constraints>
                                             <constraint firstAttribute="trailing" secondItem="oGd-mG-cFw" secondAttribute="trailing" id="25y-hg-Obr"/>


=====================================
modules/gui/macosx/UI/VLCMainVideoView.xib
=====================================
@@ -98,17 +98,16 @@
                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="1GA-GG-Sdx">
                                 <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">
+                                    <button wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="f4v-2z-dQ1" customClass="VLCTimeField">
                                         <rect key="frame" x="652" y="20" width="79" height="14"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="75" id="8Zz-X6-yY1"/>
                                         </constraints>
-                                        <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="right" placeholderString="0:00" id="FlV-4J-8Jc">
+                                        <buttonCell key="cell" type="push" title="0:00" bezelStyle="regularSquare" imagePosition="overlaps" alignment="right" controlSize="small" borderStyle="border" inset="2" id="FlV-4J-8Jc">
                                             <font key="font" metaFont="smallSystem"/>
                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
-                                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                                        </textFieldCell>
-                                    </textField>
+                                        </buttonCell>
+                                    </button>
                                     <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="167" height="53"/>
                                         <subviews>
@@ -330,17 +329,16 @@
                                             <real value="3.4028234663852886e+38"/>
                                         </customSpacing>
                                     </stackView>
-                                    <textField wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ri-8b-8mw" customClass="VLCTimeField">
+                                    <button wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ri-8b-8mw" customClass="VLCTimeField">
                                         <rect key="frame" x="18" y="20" width="79" height="14"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="75" id="S9v-aM-nfL"/>
                                         </constraints>
-                                        <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" placeholderString="0:00" usesSingleLineMode="YES" id="0ya-Dd-ecT">
+                                        <buttonCell key="cell" type="push" title="0:00" bezelStyle="regularSquare" imagePosition="overlaps" alignment="left" controlSize="small" borderStyle="border" inset="2" id="0ya-Dd-ecT">
                                             <font key="font" metaFont="smallSystem"/>
                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
-                                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                                        </textFieldCell>
-                                    </textField>
+                                        </buttonCell>
+                                    </button>
                                 </subviews>
                                 <constraints>
                                     <constraint firstItem="f4v-2z-dQ1" firstAttribute="trailing" secondItem="qNZ-Fh-W8i" secondAttribute="trailing" id="0DA-7x-5iR"/>


=====================================
modules/gui/macosx/views/VLCTimeField.h
=====================================
@@ -1,11 +1,12 @@
 /*****************************************************************************
- * VLCTimeField.h: NSTextField subclass for playback time fields
+ * VLCTimeField.h: NSButton subclass for playback time fields
  *****************************************************************************
  * Copyright (C) 2003-2017 VLC authors and VideoLAN
  *
  * Authors: Jon Lech Johansen <jon-vl at nanocrew.net>
  *          Felix Paul Kühne <fkuehne at videolan dot org>
  *          Marvin Scholz <epirat07 at gmail dot com>
+ *          Serhii Bykov <esphynox at gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -33,7 +34,7 @@
 extern NSString * const VLCTimeFieldDisplayTimeAsElapsed;
 extern NSString * const VLCTimeFieldDisplayTimeAsRemaining;
 
- at interface VLCTimeField : NSTextField
+ at interface VLCTimeField : NSButton
 
 @property (readwrite, assign, nonatomic) NSString *preferencesIdentifier;
 @property (readwrite, assign, nonatomic) BOOL isTimeRemaining;


=====================================
modules/gui/macosx/views/VLCTimeField.m
=====================================
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * VLCTimeField.m: NSTextField subclass for playback time fields
+ * VLCTimeField.m: NSButton subclass for playback time fields
  *****************************************************************************
  * Copyright (C) 2003-2017 VLC authors and VideoLAN
  *
@@ -7,6 +7,7 @@
  *          Felix Paul Kühne <fkuehne at videolan dot org>
  *          Marvin Scholz <epirat07 at gmail dot com>
  *          Claudio Cambra <developer at claudiocambra dot com>
+ *          Serhii Bykov <esphynox at gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -35,6 +36,8 @@ NSString * const VLCTimeFieldDisplayTimeAsRemaining = @"DisplayTimeAsTimeRemaini
 {
     NSString *_cachedTime;
     NSString *_remainingTime;
+    NSFont *_titleFont;
+    NSColor *_titleColor;
 }
 @end
 
@@ -46,6 +49,51 @@ NSString * const VLCTimeFieldDisplayTimeAsRemaining = @"DisplayTimeAsTimeRemaini
     [NSUserDefaults.standardUserDefaults registerDefaults:appDefaults];
 }
 
+- (instancetype)initWithFrame:(NSRect)frameRect
+{
+    self = [super initWithFrame:frameRect];
+    if (self) {
+        [self setup];
+    }
+    return self;
+}
+
+- (instancetype)initWithCoder:(NSCoder *)coder
+{
+    self = [super initWithCoder:coder];
+    if (self) {
+        [self setup];
+    }
+    return self;
+}
+
+- (void)setup
+{
+    NSDictionary<NSAttributedStringKey, id> * const initialAttributes =
+        self.attributedTitle.length > 0 ? [self.attributedTitle attributesAtIndex:0 effectiveRange:nil] : nil;
+    _titleFont = initialAttributes[NSFontAttributeName] ?: self.cell.font;
+    _titleColor = initialAttributes[NSForegroundColorAttributeName] ?: NSColor.labelColor;
+
+    self.bordered = NO;
+    [self setButtonType:NSButtonTypeMomentaryChange];
+    self.bezelStyle = NSBezelStyleRegularSquare;
+    self.focusRingType = NSFocusRingTypeNone;
+    self.imagePosition = NSNoImage;
+    self.cell.lineBreakMode = NSLineBreakByClipping;
+    self.title = @"";
+    [self updateDisplayedTitle];
+}
+
+- (BOOL)acceptsFirstMouse:(NSEvent *)event
+{
+    return YES;
+}
+
+- (BOOL)mouseDownCanMoveWindow
+{
+    return NO;
+}
+
 - (void)setPreferencesIdentifier:(NSString *)preferencesIdentifier
 {
     _preferencesIdentifier = preferencesIdentifier;
@@ -62,19 +110,27 @@ NSString * const VLCTimeFieldDisplayTimeAsRemaining = @"DisplayTimeAsTimeRemaini
                                               forKey:self.preferencesIdentifier];
     }
 
-    [self updateTimeValue];
+    [self updateDisplayedTitle];
+}
+
+- (NSTextAlignment)alignment
+{
+    return self.cell.alignment;
+}
+
+- (void)setAlignment:(NSTextAlignment)alignment
+{
+    self.cell.alignment = alignment;
+    [self updateDisplayedTitle];
 }
 
-- (void)mouseDown:(NSEvent *)ourEvent
+- (void)mouseDown:(NSEvent *)event
 {
-    if (ourEvent.clickCount > 1) {
+    if (event.clickCount > 1) {
         [VLCMain.sharedInstance.mainMenu goToSpecificTime:nil];
     } else {
         self.isTimeRemaining = !self.isTimeRemaining;
     }
-
-    [self updateTimeValue];
-    [self.nextResponder mouseDown:ourEvent];
 }
 
 - (void)setTime:(NSString *)time withRemainingTime:(NSString *)remainingTime
@@ -82,28 +138,26 @@ NSString * const VLCTimeFieldDisplayTimeAsRemaining = @"DisplayTimeAsTimeRemaini
     _cachedTime = time;
     _remainingTime = remainingTime;
 
-    [self updateTimeValue];
+    [self updateDisplayedTitle];
 }
 
-- (void)updateTimeValue
+- (void)updateDisplayedTitle
 {
-    if (!_cachedTime || !_remainingTime) {
-        return;
-    }
+    NSString * const title =
+        self.timeRemaining ? (_remainingTime ?: @"") : (_cachedTime ?: @"");
 
-    if (self.timeRemaining) {
-        self.stringValue = _remainingTime;
-    } else {
-        self.stringValue = _cachedTime;
-    }
-}
+    NSMutableParagraphStyle * const paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    paragraphStyle.alignment = self.alignment;
+    paragraphStyle.lineBreakMode = NSLineBreakByClipping;
 
-- (void)setStringValue:(NSString *)stringValue
-{
-    [super setStringValue:stringValue];
+    NSDictionary<NSAttributedStringKey, id> * const attributes = @{
+        NSFontAttributeName : _titleFont ?: [NSFont systemFontOfSize:NSFont.smallSystemFontSize],
+        NSForegroundColorAttributeName : _titleColor ?: NSColor.labelColor,
+        NSParagraphStyleAttributeName : paragraphStyle
+    };
 
-    _cachedTime = nil;
-    _remainingTime = nil;
+    self.attributedTitle = [[NSAttributedString alloc] initWithString:title
+                                                           attributes:attributes];
 }
 
 - (BOOL)timeRemaining



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/f4fa30dc9a961c83826b05178ecc1f28b6938943

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/f4fa30dc9a961c83826b05178ecc1f28b6938943
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list